[rspec-users] more verbosity for be_an?

Rick DeNatale rick.denatale at gmail.com
Sat Jan 2 17:50:02 EST 2010

On Sat, Jan 2, 2010 at 4:35 PM, David Chelimsky <dchelimsky at gmail.com> wrote:
> On Sat, Jan 2, 2010 at 3:23 PM, Andrew Premdas <apremdas at gmail.com> wrote:
>> 2009/12/30 rogerdpack <rogerpack2005 at gmail.com>
>>> > What about something like:
>>> >
>>> >   expected #<Class:2158174640> => Fixnum to be a kind of Fixnum
>>> >
>>> > That is more aligned with other failure messages. WDYT?
>>> I quite like it.
>>> In this instance it was
>>> 3.class.should be_a Fixnum # fails
>>> I suppose it would be something like
>>> expected #<Class:Fixnum> => Class to be a kind of Fixnum
>>> ?
>>> > And just out of curiosity, Roger, what's your use case?  I can't
>>> > remember ever using be_a/be_an, at least not in any code that has survived.
>>> The very first test I thought up was "this method should return an
>>> integer" so kind of a basic test for a not yet existent method.
>> Isn't this a bit anti-ruby though. Surely the things we should be testing
>> is that the object exists, responds to certain messages and gives certain
>> values back for those messages. Thinking about types is so Java, C++ :-)
> Generally speaking, you're correct, but there are cases where this is
> valuable - like if you're spec'ing a factory in a lib for others to use,
> etc.

However, I need to point out that


1.should be_a Fixnum


1.class.should_not be_a Fixnum


1.class == Fixnum which is after all a Class, and not a Fixnum itself.

Rick DeNatale

Blog: http://talklikeaduck.denhaven2.com/
Twitter: http://twitter.com/RickDeNatale
WWR: http://www.workingwithrails.com/person/9021-rick-denatale
LinkedIn: http://www.linkedin.com/in/rickdenatale

More information about the rspec-users mailing list