Read more

RSpec: be_true does not actually check if a value is true

Henning Koch
January 28, 2016Software engineer at makandra GmbH

be_true and be_false were removed form RSpec 3.

Don't use be_true to check if a value is true. It actually checks if it anything other than nil or false. That's why it has been renamed to be_truthy in recent RSpec versions Show archive.org snapshot .

Illustration UI/UX Design

UI/UX Design by makandra brand

We make sure that your target audience has the best possible experience with your digital product. You get:

  • Design tailored to your audience
  • Proven processes customized to your needs
  • An expert team of experienced designers
Read more Show archive.org snapshot

The same thing holds for be_false, which actually checks if a value is not "truthy".

If you want to check for true or false in RSpec 2, write this instead:

value.should == true
value.should == false

If you want to check for true or false in RSpec 3+, write this instead:

expect(value).to eq(true)
expect(value).to eq(false)

See also

RSpec claims nil to be false

Posted by Henning Koch to makandra dev (2016-01-28 11:38)