Hi all,
I have what I thought was quite a simple requirement but something to
do with the way ActiveRecord's associations work is making it quite
puzzling.
I guess I can sum it up with this failing test:
before(:each) do
@source_comment = @source.comments.create(:user_id => 1)
@target_comment = @target.comments.create(:user_id => 1)
end
it "should return the same object from create() as from the
array" do
(@target_comment.equal?(@target.comments[0])).should be_true
do_merge
end
What I actually want to be able to do, is mock a method call on the
@target_comment but I'm finding that I get unreliable results:
@target.comments[0].should_receive(:merge_in) # works
# @target_comment.should_receive(:merge_in) # doesn't work
The code I'm testing is using self.comments.each() to access the
object it's going to call merge_in() on - the one I want to mock.
Any tips here folks?
Someone here has suggested that what I really need to do is express
my mock like... (commence pseudo code)
Comment.should_receive_instance_method(:merge_in).with
(...).on_an_object_matching{|o| o.id = @target_comment.id}
(/pseudo code)
Has anyone else come across similar issues? How did you approach them?
cheers,
Matt
----
http://blog.mattwynne.net
http://songkick.com
In case you wondered: The opinions expressed in this email are my own
and do not necessarily reflect the views of any former, current or
future employers of mine.
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users