RSpec中“be_true”和“be true”之间的区别是什么?
任何人都be true
通过简单的例子向我解释be_true
与Ruby之间的区别。 我也看到be_true
和be_false
被改为be_truthy
和be_falsey
我有一个'be true'
工作的例子,但是当我尝试使用'be_true'
或'be_truthy'
规格失败了。
我使用RSpec版本3.1.7
根据这个线程, be_true
和be_false
现在称为be_truthy
和be_falsy
。
be true
和be_truthy
之间的基本区别be false
和be_falsy
是be_falsy
/ be_truthy
matcher传递,如果“预期结果”(即任何对象) 是 (对于be_falsy
)/ 不是 (对于be_truthy
) nil
或false
,而在另一方面be true
并且be false
使用==
用于validation你的“预期结果”( 布尔对象 )等于true
/ false
。
从rspec期望的真实性意味着:
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
除了nil
/ true
/ false
,您可以在"string"
的位置使用任何其他对象作为“预期结果”,因为它们已经存在于上面显示的示例中。