使用 mocha 对淘汰组件进行单元测试
Unit testing knockout components with mocha
我之前一直在使用 Jasmine 和 Karma 对我的 Knockout 应用程序和组件进行单元测试。由于我不需要这些测试来测试任何 DOM,我正在切换到 Mocha。
我正在测试这样的 Knockout 组件(非常简单):
MyComponent.js:
function MyComponent(params) {
this.forename = params.forename;
this.surname = params.surname;
}
exports.MyComponent = MyComponent
ko.components.register('my-component', {
viewModel: MyComponent,
template: {
fromUrl: 'my-component.html'
}
});
MyComponent.test.js:
var expect = require("expect.js");
var MyComponent = require("./src/components/my-component/my-component");
describe("Should do stuff", function () {
it("should do stuff, function () {
var myComponent = new MyComponent({});
expect(myComponent.forename).to.be(undefined);
});
});
当我 运行 这个(使用 gulp-mocha)时,我收到一条错误消息说 ko is not defined
。现在我很确定我需要在 MyComponent.js 中要求淘汰赛,但我不确定如何。我试过:
var ko = require("ko");
... require("knockout");
... require("knockout.js");
...require("path/to/knockout/knockout");
而且我仍然收到此错误消息。我在这里做错了什么?
你想测试你的组件在有或没有敲除的情况下的工作情况吗?
如果你想测试组件并且它们可以在没有敲除的情况下进行测试,我建议将注册(这是我现在能看到的唯一依赖于敲除的部分)移动到另一个文件并只测试组件本身.
如果您确实需要 knockout 存在,您可能还需要通过 Knockout 依赖于浏览器(我不知道 knockout,所以我不确定这一点)。在那种情况下,您可能 运行 使用业力会更好。 (如果你愿意,你可以用 mocha 代替 jasmine 和 karma)。
或者,您可以使用 sinon 模拟 ko 函数,但这可能只会使它变得更复杂...
我之前一直在使用 Jasmine 和 Karma 对我的 Knockout 应用程序和组件进行单元测试。由于我不需要这些测试来测试任何 DOM,我正在切换到 Mocha。
我正在测试这样的 Knockout 组件(非常简单):
MyComponent.js:
function MyComponent(params) {
this.forename = params.forename;
this.surname = params.surname;
}
exports.MyComponent = MyComponent
ko.components.register('my-component', {
viewModel: MyComponent,
template: {
fromUrl: 'my-component.html'
}
});
MyComponent.test.js:
var expect = require("expect.js");
var MyComponent = require("./src/components/my-component/my-component");
describe("Should do stuff", function () {
it("should do stuff, function () {
var myComponent = new MyComponent({});
expect(myComponent.forename).to.be(undefined);
});
});
当我 运行 这个(使用 gulp-mocha)时,我收到一条错误消息说 ko is not defined
。现在我很确定我需要在 MyComponent.js 中要求淘汰赛,但我不确定如何。我试过:
var ko = require("ko");
... require("knockout");
... require("knockout.js");
...require("path/to/knockout/knockout");
而且我仍然收到此错误消息。我在这里做错了什么?
你想测试你的组件在有或没有敲除的情况下的工作情况吗?
如果你想测试组件并且它们可以在没有敲除的情况下进行测试,我建议将注册(这是我现在能看到的唯一依赖于敲除的部分)移动到另一个文件并只测试组件本身.
如果您确实需要 knockout 存在,您可能还需要通过 Knockout 依赖于浏览器(我不知道 knockout,所以我不确定这一点)。在那种情况下,您可能 运行 使用业力会更好。 (如果你愿意,你可以用 mocha 代替 jasmine 和 karma)。
或者,您可以使用 sinon 模拟 ko 函数,但这可能只会使它变得更复杂...