These objects aren't equal..I'm confused


#1

I’m testing to see if two objects are equal. One is accessed directly
from the fixture, and the other is accessed through a relationship.
Here’s the test:

def test_hero
assert_equal players(:hero), hands(:first).hero
end

Anyway, the values are exactly the same as far as I can tell. The
only difference is the object id, but Ruby compares the values, right?
This just stopped working when I added another db field to the Hand
class, but that shouldn’t affect this I’d think…any ideas?

  1. Failure:
    test_hero(HandTest) [test/unit/hand_test.rb:34]:
    <#<Player:0x2208b24
    @attributes=
    {“card1”=>“Kh”,
    “card2”=>“Qd”,
    “hero”=>true,
    “hand_id”=>1,
    “seat”=>3,
    “id”=>3,
    “range”=>nil,
    “chips”=>2500}>> expected but was
    <#<Player:0x2207d14
    @attributes=
    {“card1”=>“Kh”,
    “card2”=>“Qd”,
    “hero”=>true,
    “hand_id”=>1,
    “seat”=>3,
    “id”=>3,
    “range”=>nil,
    “chips”=>2500}>>.

#2

On 3/21/06, Tom M. removed_email_address@domain.invalid wrote:

Just test the object.id, which will tell you what you want to know.

Are you sure that’s appropriate for a test case? I personally want
more checking than that.

– James


#3

Just test the object.id, which will tell you what you want to know.

I just checked AWDR, and it appears they always use attributes with
assert equal.


– Tom M.