【发布时间】:2015-12-13 11:02:24
【问题描述】:
expect(something).toBe(true)、expect(something).toBeTruthy() 和 expect(something).toBeTrue() 有什么区别?
请注意,toBeTrue() 是在jasmine-matchers 中引入的自定义匹配器,以及其他有用且方便的匹配器,例如toHaveMethod() 或toBeArrayOfStrings()。
这个问题是通用的,但是,作为一个真实的例子,我正在测试一个元素是否显示在protractor 中。在这种情况下我应该使用哪个匹配器?
expect(elm.isDisplayed()).toBe(true);
expect(elm.isDisplayed()).toBeTruthy();
expect(elm.isDisplayed()).toBeTrue();
【问题讨论】:
-
我认为
.toBe(true)==.toBeTrue()。 toBeTruthy() 不仅在 true 时为真,而且在 123、“dfgdfg”、[1,2,3] 等时为真……基本上if(x==true)是真实,而if(x===true)是真实的。 -
这将取决于您要测试的值是什么。如果您不确定类型与
== true相同,请使用toBeTruthy,而我怀疑.toBe(true)与=== true相同请注意,调用函数来测试是否为真有点过分。忠告,。忘记 Javascript 中存在的==和!=,永远不要再使用它。不需要真实,并且是初学者的陷阱。请改用===和!==。 -
@Blindman67 感谢您的建议,这很有意义。如果使用了
==或!=,我们甚至有eslint报告我们,建议将其更改为===和!==。
标签: javascript testing jasmine protractor jasmine-matchers