mosoleu
January 14, 2009, 10:18am
1
rspec 1.1.11 and it’s rails sidekick.
After writing a few specs for an object I created that inherits form
an Hash I noticed that eql wasn’t matching hashes that where actually
matching (I’m pretty sure it worked fine before):
{:foo => 0, :bar => 1}.should eql({:foo => 0, :bar => 1})
=> expected {:foo=>0, :bar=>1}, got {:foo=>0, :bar=>1}
(using .eql?)
h={:foo => 0, :bar => 1}
h.should eql(h)
=> pass
by the way == still works:
({:foo => 0, :bar => 1} == {:foo => 0, :bar => 1}).should
=> Still passes
It works ok with everything else…
I obviously did something wrong. Any clue? Where should I look?
Cheers
“eql?” matches object references, you should use “==” to match equality.
Maurício Linhares
http://alinhavado.wordpress.com/ (pt-br) | http://blog.codevader.com/
(en)
On Wed, Jan 14, 2009 at 5:07 AM, Maurício Linhares
[email protected] wrote:
“eql?” matches object references, you should use “==” to match equality.
eql? acts differently in different situations. equal? is the one you
should use for object references if you want any consistency.
mosoleu
January 14, 2009, 12:19pm
4
On Thu, Jan 8, 2009 at 5:26 PM, Leandro P. [email protected]
wrote:
h={:foo => 0, :bar => 1}
h.should eql(h)
=> pass
by the way == still works:
({:foo => 0, :bar => 1} == {:foo => 0, :bar => 1}).should
=> Still passes
It works ok with everything else…
I obviously did something wrong. Any clue? Where should I look?
http://rspec.rubyforge.org/rspec/1.1.12/classes/Spec/Matchers.html#M000468
Also - read up on Ruby’s semantics of eql?, equal? and ==