Karma与Mocha,Chai,Chai-as-promise和chai-sinon

时间:2015-12-07 12:44:42

标签: karma-runner karma-mocha chai-as-promised sinon-chai

我试图让我的Karma测试套件与Mocha,Chai,Sinon,Chai-as-promise和chai-sinon一起运行。

它目前只设置了mocha,chai和sinon框架。

frameworks: ['mocha', 'requirejs', 'sinon', 'chai']

现在我已经尝试添加一些额外的业力插件,即karma-chai-sinon和karma-chai-as-promise。然后将上面改为

frameworks: ['mocha', 'requirejs', 'chai-sinon', 'chai-as-promised', 'chai']

在我的单元测试中我有

expect(stub).to.not.have.been.called();

但是这给了我一个错误' TypeError:' [object Object]'不是一个功能......' 但是如果我做的话

expect(stub.called).to.equal(false);

它按预期工作。

我已经尝试检查业力插件代码,但无法理解它们,我期望在业力插件的某个地方说“chai.use(chaiAsPromised)'和' chai.use(sinonChai)'但他们没有。 Karma网站并没有真正解释插件/框架是如何工作的。

有人可以帮我解决这个问题吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

默认情况下,任何不带参数的断言都必须在没有括号的情况下声明:

expect(stub).not.to.have.been.called;

(是的,这很奇怪。)

那是因为在这种情况下called是一个getter函数,它实际上在 时设置断言。

如果你想使用括号将这些断言称为函数,你可以使用像dirty-chai(和karma-dirty-chai)这样的插件。