Should_receive twice and arguments

Hi all, I have a method calling Klass.create! two times with different
arguments (this happens in a class reponsable for reading in a csv file)

I want to test those like this:

in one test: Klass.should_receive(:create!).with(:name => “foo”).once
in another: Klass.should_receive(:create!).with(:name => “foo2”).once

This doesn’t work because the ‘once’ is only about the create! call,
it doesn’t use the arguments to make the call unique. Can I make this
work another way (not only should_receive(:create!).twice, I want to
test the arguments).

Thanks for any feedback.

Ivo

On Jan 13, 2008 6:56 AM, Ivo D. [email protected] wrote:

Hi all, I have a method calling Klass.create! two times with different
arguments (this happens in a class reponsable for reading in a csv file)

I want to test those like this:

in one test: Klass.should_receive(:create!).with(:name => “foo”).once
in another: Klass.should_receive(:create!).with(:name => “foo2”).once

This doesn’t work because the ‘once’ is only about the create! call,

Actually, that should work. ‘once’ is about the complete expectation
including the arguments. If this isn’t working you’ve uncovered a bug.
Please report it to the lighthouse (http://rspec.lighthouseapp.com)
with specific examples we can run and the output you’re getting.

Thanks,
David

Ok,

found the problem after trying to make an example: I forgot to add a
stub! to accept the second call to create!

I didn’t find it sooner because the error was:

Mock ‘Class’ expected :create! with ({:name=>“foo”}) but received it
with ({:name=>“foo2”})
And it did get it with ({:name => “foo”}), but only the first time…

Thanks!
Ivo

Op 13-jan-08, om 14:00 heeft David C. het volgende geschreven: