# Rspec and inequalities?

In an old version of rspec, you could do “x.should_be < y”, but this
throws a NoMethodError now. What’s the proper way to test inequalities
(less than/greater than)?

On Jun 9, 7:35 am, Mark T. [email protected] wrote:

In an old version of rspec, you could do “x.should_be < y”, but this
throws a NoMethodError now. What’s the proper way to test inequalities
(less than/greater than)?

It’s basically the same:

x.should be < y

James

It’s basically the same:

x.should be < y

James

Thanks! Is this syntactic sugar for all be_xxx methods? I just noticed
that I can omit the underscore in be_true also. I’m surprised I
haven’t noticed that in examples.

On Mon, Jun 9, 2008 at 11:54 AM, Mark T. [email protected]
wrote:

It’s basically the same:

x.should be < y

James

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)

Rick DeNatale

My blog on Ruby

On Thu, Jun 12, 2008 at 10:44 AM, Mark T. [email protected]
wrote:

item.should be valid?

I don’t think that would work. But I think you could use the rather
Yoda
like:

item.valid?.should be

Rick DeNatale

My blog on Ruby

On Jun 11, 6:31 pm, Rick DeNatale [email protected] wrote:

rspec bug, but I’d say that 1.should be_false > 0 is nonsensical, so who
cares.

Actually, what I meant is can
item.should be_valid

be replaced with
item.should be valid

but now that I think about it, rspec probably does some method_missing
magic with the be_ prefix and wouldn’t know to use #valid? with the
question mark. Maybe the equivalent is

item.should be valid?