[rspec-users] Expected "with" matches received "with" in error message

David Chelimsky dchelimsky at gmail.com
Mon Nov 3 11:44:26 EST 2008


On Mon, Nov 3, 2008 at 9:30 AM, David Chelimsky <dchelimsky at gmail.com> wrote:
> On Mon, Nov 3, 2008 at 9:23 AM, Tom Hoen <lists at ruby-forum.com> wrote:
>> I am trying to spec a controller that sets up a page to add two
>> instances of an object to another (many to many :through).
>>
>> In my controller_spec, I have the following statements:
>>
>>      Student.should_receive(:new).and_return(mock_student)
>>      mock_student.should_receive(:relatives).twice
>>      mock_student.relatives.should_receive("<<").with(Relative.new(:parent
>> => Parent.new)).twice
>>
>> When I run the test, I get the following error message:
>>
>> Spec::Mocks::MockExpectationError in 'StudentsController responding to
>> GET new should expose a new student as @student'
>> Mock 'NilClass' expected :<< with (#<Relative id: nil, parent_id: nil,
>> student_id: nil, created_at: nil, updated_at: nil, child_lives_with:
>> nil>) but received it with (#<Relative id: nil, parent_id: nil,
>> student_id: nil, created_at: nil, updated_at: nil, child_lives_with:
>> nil>)
>>
>> It seems what it is receiving and expecting are the same.
>>
>> Any ideas would be greatly appreciated.
>
> ActiveRecord treats two unsaved records as unequal, even if they have
> the same properties. Try this in script/console
>
> Relative.new == Relative.new
> => false

This fact has always bugged me, so I finally did something about it:

http://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/1321
http://github.com/dchelimsky/rails/commit/03be483

Cheers,
David

>
> To get this to work you'll have to either use real records (with IDs)
> or stub whatever it is that is supplying the Relative and then expect
> with(the_relative_you_supply_as_a_stub_value).
>
> Make sense?
>
>>
>> Tom
>> --
>> Posted via http://www.ruby-forum.com/.
>> _______________________________________________
>> rspec-users mailing list
>> rspec-users at rubyforge.org
>> http://rubyforge.org/mailman/listinfo/rspec-users
>>
>


More information about the rspec-users mailing list