任何人都可以通过简单的例子向我解释Ruby中be_true
和be true
之间的区别。我还看到be_true
和be_false
已更改为be_truthy
和be_falsey
我有一个'be true'
工作的示例,但是当我尝试使用'be_true'
或'be_truthy'
规范失败时。
我正在使用RSpec 3.1.7版
答案 0 :(得分:28)
根据this thread be_true
和be_false
现在称为be_truthy
和be_falsy
。
be true
和be_truthy
或be false
和be_falsy
之间的基本区别在于be_falsy
/ be_truthy
匹配器通过&#34 ;预期结果"(即任何对象) (对于 be_falsy
)/ 不是 (对于 be_truthy
)nil
或false
,而另一方面be true
和{{1}使用be false
验证您的"预期结果"(布尔对象)等于==
/ true
。
rspec expectations' truthiness的含义是:
false
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
和be true
:
be false
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
之外的地方,因为它们已经出现在上面显示的示例中。