On 2010-04-25 5:25 PM, Patrick J. Collins wrote:
Here is a gist of my code:
http://gist.github.com/378778
Use stub when you just want to provide the plumbing. Use should_receive when
you are setting an expectation. As an example, you could do
Photo.stub(:create) just to provide the method to avoid errors when your code
calls it. But if you actually want to verify that your code calls it, then do
Well, as you can see by my code, I am actually doing a loop
@card.addresses.each .... This is calling the @country = get_country ||
Country.find_by_name("United States")
So-- the number of times .find_by_name needs to be intercepted by
.should_receive is dependent on the number of addresses in a vcard.
And this would be the difference between stubbing and expecting. Do you
need to set an expectation that it gets called a certain number of
times? If not, just stub it (which is what you did and the error went
away). Only use should_receive when you want to verify that a method is
actually being called in your code. I generally do that when I want to
make sure different branches of execution are followed correctly.
This was the problem I didn't know how to address, and using stub! resolved it,
but like I said-- I didn't know if there's a more appropriate way to do it.
Patrick J. Collins
http://collinatorstudios.com
Regarding your original problem of the mocking error, have you debugged
into the FlexImage code? In looking at your gist, you have this:
# @photo = mock_model(Photo, {:image_file_string => photo_content})
which says "create a mock object based on the Photo model, and if
#image_file_string gets called on that object, return photo_content".
Then you have
# Photo.should_receive(:create).and_return(@photo)
which obviously says "Photo should receive a call to the .create method,
and when it does, return @photo". The potential problem that I see
(though I may not be understanding something correctly), is when you
call Photo.create, .image_file_string= is being called in the FlexImage
codebase. I'm wondering if your issue might be somewhere down in there.
I'd do some more digging, but I have to run right now.
Good luck!
Peace,
Phillip
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users