1

我正在尝试让我的 Karma 测试套件与 Mocha、Chai、Sinon、Chai-as-promised 和 chai-sinon 一起运行。

它目前仅使用 mocha、chai 和 sinon 框架进行设置。

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

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

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);

它按预期工作。

我已经尝试检查 karma 插件代码但无法理解它们,我希望 karma 插件中的某个地方会说“chai.use(chaiAsPromised)”和“chai.use(sinonChai)”但他们没有. Karma 网站也没有真正解释插件/框架如何在幕后工作。

有人可以帮我设置吗?

提前致谢。

4

1 回答 1

1

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

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

(是的,这很奇怪。)

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

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

于 2016-01-18T16:44:07.587 回答