【问题标题】:Karma with Mocha, Chai, Chai-as-promised and chai-sinon因果报应与摩卡,柴,柴-as-promised 和 chai-sinon
【发布时间】:2016-03-12 01:46:21
【问题描述】:

我正在尝试让我的 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]' is not a function...' 但是如果我这样做了

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

它按预期工作。

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

谁能帮我设置一下?

提前致谢。

【问题讨论】:

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


    【解决方案1】:

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

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

    (是的,这很奇怪。)

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-24
      • 2015-05-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-27
      • 2019-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多