Как проверить равенство объектов (ActiveRecord)

В Ruby 1.9.2 на Rails 3.0.3 я пытаюсь проверить равенство объектов между двумя объектами Friend (класс наследуется от ActiveRecord :: Base ).

Объекты равны, но тест не проходит:

Failure/Error: Friend.new(name: 'Bob').should eql(Friend.new(name: 'Bob'))

expected #<Friend id: nil, event_id: nil, name: 'Bob', created_at: nil, updated_at: nil>
     got #<Friend id: nil, event_id: nil, name: 'Bob', created_at: nil, updated_at: nil>

(compared using eql?)

Просто для усмешки, я тоже тест на идентичность объекта, который, как я и ожидал, терпит неудачу:

Failure/Error: Friend.new(name: 'Bob').should equal(Friend.new(name: 'Bob'))

expected #<Friend:2190028040> => #<Friend id: nil, event_id: nil, name: 'Bob', created_at: nil, updated_at: nil>
     got #<Friend:2190195380> => #<Friend id: nil, event_id: nil, name: 'Bob', created_at: nil, updated_at: nil>

Compared using equal?, which compares object identity,
but expected and actual are not the same object. Use
'actual.should == expected' if you don't care about
object identity in this example.

Может ли кто-нибудь объяснить мне, почему первый тест на равенство объектов не проходит, и как я могу успешно утверждать, что эти два объекта равны?

51
задан chipotle_warrior 19 January 2011 в 07:18
поделиться