当我想知道类似此处的问题的内容时,该怎么办?
成为()
expect().toBe()
定义为:
function toBe() {
return {
compare: function(actual, expected) {
return {
pass: actual === expected
};
}
};
}
它执行其测试,===
这意味着当用作时expect(foo).toBe(true)
,只有foo
实际具有该值时,它才会通过true
。真实的价值不会通过测试。
toBeTruthy()
expect().toBeTruthy()
定义为:
function toBeTruthy() {
return {
compare: function(actual) {
return {
pass: !!actual
};
}
};
}
类型强制
如果此值强制转换为布尔值,则该值为真true
。该操作!!
通过强制传递给expect
布尔值的值来测试真实性。请注意,反之目前公认的答案是什么暗示,== true
是不是对感实性正确的测试。您会得到一些有趣的东西,例如
> "hello" == true
false
> "" == true
false
> [] == true
false
> [1, 2, 3] == true
false
而使用!!
收益率:
> !!"hello"
true
> !!""
false
> !![1, 2, 3]
true
> !![]
true
(是的,是否为空,数组是真实的。)
是真实的()
expect().toBeTrue()
是Jasmine-Matchers的一部分(Jasmine-Matchers的一部分在npm上注册,就像jasmine-expect
在以后的项目jasmine-matchers
首先注册一样)。
expect().toBeTrue()
定义为:
function toBeTrue(actual) {
return actual === true ||
is(actual, 'Boolean') &&
actual.valueOf();
}
与expect().toBeTrue()
和的区别expect().toBe(true)
在于expect().toBeTrue()
测试它是否正在处理Boolean
对象。expect(new Boolean(true)).toBe(true)
会失败,而expect(new Boolean(true)).toBeTrue()
会通过。这是因为这个有趣的事情:
> new Boolean(true) === true
false
> new Boolean(true) === false
false
至少这是事实:
> !!new Boolean(true)
true
哪个最适合用于elem.isDisplayed()
?
最终,量角器将此请求交给了Selenium。该文档指出所产生的值.isDisplayed()
是一个承诺解析为一个boolean
。我会从表面上看待它,并使用.toBeTrue()
或.toBe(true)
。如果我发现实现返回真/假值的情况,我将提交错误报告。
.toBe(true)
==.toBeTrue()
。toBeTruthy()不仅可以在真真,但在123,“dfgdfg”,[1,2,3],等等...基本上if(x==true)
是truthy,而if(x===true)
为真真。