当前位置: 首页 > 知识库问答 >
问题:

toBe(true)vs toBeTruthy()vs toBeTrue()

齐财
2023-03-14

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();

共有1个答案

壤驷阳冰
2023-03-14

当我想知道类似这里问的问题时,我会做的是去寻找源头。

expect().tobe()定义为:

function toBe() {
  return {
    compare: function(actual, expected) {
      return {
        pass: actual === expected
      };
    }
  };
}

它使用===执行测试,这意味着当用作expect(foo).tobe(true)时,只有当foo实际具有true值时,它才会通过。真实的价值观不会让测试通过。

function toBeTruthy() {
  return {
    compare: function(actual) {
      return {
        pass: !!actual
      };
    }
  };
}
> "hello" == true
false
> "" == true
false
> [] == true
false
> [1, 2, 3] == true
false
> !!"hello"
true
> !!""
false
> !![1, 2, 3]
true
> !![] 
true

(是的,无论是否为空,数组都是真实的。)

expect().tobetrue()是Jasmine-Matchers的一部分(在npm上注册为jasmine-expect,之后一个项目首先注册了Jasmine-Matchers)。

expect().tobetrue()定义为:

function toBeTrue(actual) {
  return actual === true ||
    is(actual, 'Boolean') &&
    actual.valueOf();
}
> new Boolean(true) === true
false
> new Boolean(true) === false
false
> !!new Boolean(true)
true

最后量角器把这个请求交给了硒。文档指出,.isdisplay()生成的值是一个promise,可以解析为Boolean。我将从表面上看,并使用.tobetrue().tobe(true)。如果我发现实现返回truthy/falsy值的情况,我将提交一个bug报告。

 类似资料:
  • 本文向大家介绍Jasmine JavaScript测试-toBe与toEqual,包括了Jasmine JavaScript测试-toBe与toEqual的使用技巧和注意事项,需要的朋友参考一下 数组可以通过2种方式进行比较- 它们引用内存中的同一数组对象。 它们可能引用不同的对象,但是它们的内容都是相同的。 示例 对于情况1,茉莉提供了toBe方法。以此作为参考。例如, 输出结果 这将给出输出-

  • 问题内容: 使用标准而不是测试特定值是否是标准约定。 如果要确定一个值是否准确(不仅仅是一个真值),是否有使用而不是使用任何理由?这在CPython(2.x和3.x),Jython,PyPy等实现之间是否有所不同? 示例:say用作您要与value或其他真值相区别的单例值: 是否存在使用会产生与的不同结果的情况? 注意:我知道Python布尔值-如果x :,则x如果x == True,则x如果x为

  • 问题内容: 当我们在Django中添加数据库字段时,通常会这样写: 同样是与做等有什么根本区别在其 null=True only blank=True only null=True, blank=True 在相对于不同的()字段。使用1/2/3有什么优点/缺点? 问题答案: 在数据库的列中设置(与相对)。字段类型(例如或)的空白值将存储NULL在数据库中。 确定是否需要表单中的字段。这包括管理员和

  • 这是标准的惯例,使用而不是来测试一个值是否特别是。 如果您想确定一个值是否完全是(而不仅仅是一个类似true的值),是否有任何理由使用而不是?这在CPython(2. x和3. x)、Jython、PyPy等实现之间是否有所不同? 示例:假设用作要与值或任何其他类似True的值区分的单例值: 如果foo为真,使用

  • 请看一下这里;谢谢大家!我试图在游戏中创建一个升级建筑的系统。我让我的升级分区对所有建筑都一样。当玩家点击build(div)时,运行一个函数以显示一个隐藏div,该div由ajax post填充,包含升级成本。div的类“name”(与db中的building name相同)被发送到php以获取所需的数据。直到现在它还可以正常工作。。。我在一个按钮中添加了一个click事件,该按钮应将div“n

  • 首先,我会试着解释我对它的理解,以知道我对它的理解是否正确。 只更新实体中的修改值 在之前创建,以了解哪些属性已被更改,这在实体已在不同会话上加载和更新时非常有用 在中,哪个更好或更快,一次更新实体中的所有字段,还是