当我想知道像这里提出的问题一样的事情时,我会怎么做,那就是去源头。
toBe()
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的一部分(在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)