[Note: parts of this message were removed to make it a legal post.]
Thanks! Is this syntactic sugar for all be_xxx methods?
No.
1.should be > 0
will work, but say:
1.should be_false > 0
will fail when RSpec tries to send #:0? to 1. One might say that this is an
rspec bug, but I'd say that 1.should be_false > 0 is nonsensical, so who
cares.
I just noticed
that I can omit the underscore in be_true also. I'm surprised I
haven't noticed that in examples.
This is because
x.should be y
is interpreted as
x.should eql y
so it will succeed if x.eql?(y) returns a truthy value.
Also note that there's a difference between
x.should be_true
or
x.should be true
or
x.should eql true
and
x.should be
The first three will succeed only iff x == true whereas the latter will
succeed iff x is any truthy value (i.e. anything except nil and false),
likewise
x.should_not be
will succeed iff x is a falsy value (i.e. nil or false)