Can any one please explain me about the difference between be_true and be true in Ruby with simple example. I have also seen be_true and be_false are changed to be_truthy and be_falsey
I have an example where 'be true' worked, but when I tried to use 'be_true' or 'be_truthy' spec failed.
I am using RSpec version 3.1.7
According to this thread be_true and be_false are now known as be_truthy and be_falsy.
The basic difference between be true and be_truthy or be false and be_falsy is that be_falsy/be_truthy matcher passes if the "expected result"(i.e. any object) is(for be_falsy)/ is not(for be_truthy) nil or false, while on the other hand be true and be false use == for validating your "expected result"(boolean object) to be equal to true/ false.
What it means from rspec expectations' truthiness is:
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
For be true and 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
For be_truthy and 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
You can use any other object as "expected result" at the place of "string" except nil/true/false, because they are already present in the examples shown above.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With