当我想知道像这里问的问题时,我所做的就是追根溯源。
优贝()
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
(是的,不管数组是否为空,数组都是正确的。)
toBeTrue()
expect(). tobetrue()是Jasmine-Matchers的一部分(在后面的项目先注册Jasmine-Matchers之后,它在npm上被注册为jasmine-expect)。
expect().toBeTrue()被定义为:
function toBeTrue(actual) {
return actual === true ||
is(actual, 'Boolean') &&
actual.valueOf();
}
expect(). tobetrue()和expect(). tobe (true)的区别在于expect(). tobetrue()测试它是否在处理一个布尔对象。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
哪个最适合与element . isdisplays()一起使用?
最终量角器把这个请求交给了Selenium。文档声明. isdisplay()生成的值是一个解析为布尔值的承诺。我会接受它的表面价值,并使用. tobetrue()或. tobe (true)。如果我发现实现返回真值/假值的情况,我会提交错误报告。