使用摩卡和柴,我注意到许多不可靠的测试。我希望这些都失败。类似的StackOverflow问题是因为异步而没有使用done()。即使这是我的案子,我也一定希望它失败!
我在应该是exist的地方输入了一个错误。它不会告诉我这一点,除非我在一个特定的位置做一个类型。
这些都通过了!?
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
好吧,谢谢柴先生现在告诉我!
好吧,我有点傻,但我可以向你保证,这让我很沮丧!
是否有一些设置,或有什么东西我错过了,或有另一个库,超过这一个?
发布于 2017-03-26 18:10:17
当您试图访问未定义的属性时,您描述的是“正常”的javascript行为。这与柴、摩卡或其他图书馆无关。
在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是一个原语,而不是一个对象。
不过,我同意您的看法,即柴期望重/这些情况下的API并不理想。我更喜欢执行类似expect(component.find('textarea')).exist()的操作,以便那里的错误(例如,.exests())确实会导致错误(“未定义不是函数”)。
但是,正如注释中所指出的,确实可以在柴:http://chaijs.com/api/assert/中使用不同的断言样式。
如果您在这方面寻找另一个可供选择的库,我会推荐Jest https://facebook.github.io/jest/)或极简的Tapejs (https://github.com/substack/tape)。
https://stackoverflow.com/questions/43031783
复制相似问题