Mocha / Chai测试:我怎样才能使它更严格?

时间:2017-03-26 17:01:50

标签: reactjs testing npm mocha chai

使用Mocha和Chai,我注意到许多不可靠的测试。我希望这些都失败。类似的StackOverflow问题是因为Async而不是使用done()。即使这是我的情况,我肯定希望它失败!

我应该是exist的拼写错误。除非我在特定的位置做出类型,否则它不会告诉我这个。

  1. 为什么这个测试没有失败?
  2. 我做错了吗?
  3. 如何让Mocha / Chai更严格?
  4. 这些全部通过了!?

    expect(component.find('textarea')).to.exest;
    expect(component.find('textarea')).to.not.exest;
    expect(component.find('textarea')).to.exsdafdsafdsfdsafest;
    

    这不是。

    expect(component.find('textarea')).BLAHASDF.exest;
    

    TypeError: Cannot read property 'exest' of undefined

    好吧,谢谢Chai现在告诉我了!​​

    好的,我有点傻,但我可以向你保证,这让我很沮丧!

    是否有一些设置,或者是否有我遗漏的东西,或者是否有其他图书馆胜过这个?

1 个答案:

答案 0 :(得分:2)

当您尝试访问未定义的属性时,您描述的是“正常”的javascript行为。这与Chai,Mocha或任何其他图书馆无关。

在Javascript中,尝试访问对象的未定义属性不会导致任何错误。你可以做例如

var a = { foo: 'bar'};
console.log(a.baz);  // This logs undefined, doesn't cause any error.

因此,如果您执行expect(component.find('textarea')).BLAHASDF.exest;而导致错误,因为您首先尝试访问BLAHASDF,其评估为undefined,然后您尝试执行undefined.exest,这会引发错误,因为undefined是基元,而不是对象。

我同意你的观点,但Chai Expect /这些案例的API应该不理想。我更喜欢做expect(component.find('textarea')).exist()之类的内容,以便在那里输入错误(例如.exests())确实会导致错误(“未定义不是函数”)。

如评论中所述,您确实可以在Chai中使用不同的断言样式:http://chaijs.com/api/assert/

如果您在这方面寻找另一个替代图书馆,我建议使用Jest https://facebook.github.io/jest/) 或简约的Tapejs(https://github.com/substack/tape