On Mon, Nov 3, 2008 at 9:23 AM, Tom Hoen <[EMAIL PROTECTED]> 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
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
> [email protected]
> http://rubyforge.org/mailman/listinfo/rspec-users
>
_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users