ruby-on-rails – RSpec中“be_true”和“true”之间有什么区别?

有任何人可以用简单的例子来解释一下关于be_true和 Ruby间的区别的区别.我也看到be_true和be_false被改为be_truthy和be_falsey

我有一个例子,“真的”工作,但是当我试图使用’be_true’或’be_truthy’规格失败.

我正在使用RSpec版本3.1.7

解决方法

根据 this thread的be_true和be_false现在称为be_truthy和be_falsy.

在true和be_truthy之间的基本差异是false和be_falsy是be_falsy / be_truthy匹配器通过,如果“预期结果”(即任何对象)(为be_falsy)/不是(对于be_truthy)为零或为false,而在另一方面是真实的,并被假使用==用于验证您的“预期结果”(布尔对象)等于true / false.

rspec expectations’ truthiness起是什么意思

expect(actual).to be_truthy   # passes if actual is truthy (not nil or false)
expect(actual).to be true     # passes if actual == true
expect(actual).to be_falsy    # passes if actual is falsy (nil or false)
expect(actual).to be false    # passes if actual == false
expect(actual).to be_nil      # passes if actual is nil
expect(actual).to_not be_nil  # passes if actual is not nil

例子 –

为了真实而虚假:

it { expect(true).to be true }        # passes
it { expect("string").to be true }    # fails
it { expect(nil).to be true }         # fails
it { expect(false).to be true }       # fails

it { expect(false).to be false }      # passes
it { expect("string").to be false}    # fails
it { expect(nil).to be false}         # fails
it { expect(true).to be false}        # fails

对于be_truthy和be_falsy:

it { expect(true).to be_truthy }      # passes
it { expect("string").to be_truthy }  # passes
it { expect(nil).to be_truthy }       # fails
it { expect(false).to be_truthy }     # fails

it { expect(false).to be_falsy }      # passes
it { expect(nil).to be_falsy }        # passes
it { expect("string").to be_falsy}    # fails
it { expect(true).to be_falsy }       # fails

您可以使用任何其他对象作为“预期结果”在“string”的位置,除了nil / true / false,因为它们已经存在于上述示例中.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...