当我想知道像这里提出的问题一样的事情时,我会怎么做,那就是去源头。
toBe()
expect().toBe() 定义为:
function toBe() {
  return {
    compare: function(actual, expected) {
      return {
        pass: actual === expected
      };
    }
  };
}
它执行其测试,这意味着当用作 时,仅当实际具有值时,它才会通过。真实的值不会使测试通过。===expect(foo).toBe(true)footrue
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-expectjasmine-matchers
expect().toBeTrue() 被定义为:
function toBeTrue(actual) {
  return actual === true ||
    is(actual, 'Boolean') &&
    actual.valueOf();
}
与 和 的区别在于,它测试它是否正在处理一个对象。 会失败,而会通过。这是因为这个有趣的事情:expect().toBeTrue()expect().toBe(true)expect().toBeTrue()Booleanexpect(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)