Chain argument expectations?

I’m trying to test some code that can loop once or multiple times and
assign some values to another object. I want to test one of the values
being assigned to the object in the loop.

e.g.

class Foo
def bar
values = returns_an_array_of_values

baz = Baz.new

values.each_with_index do |value, index|
  baz.field1 = Constant
  baz.field2 = index
  baz.field3 = value
end

end
end

it “should assign increasing index values to field3” do
quxxo = mock
Baz.stub!(:new => quxxo)

quxxo.should_receive(:field2=).with(1,2,3)
end

This doesn’t work. I tried a few different variants.

quxxo.should_receive(:field2=).with(1).with(2).with(3)

that doesn’t work either.

Any suggestions on how to set expectations for a single mock to receive
the same message multiple time with different arguments with the express
purpose of validating the arguments?

Thanks…

cr

On Jun 17, 2010, at 11:07 AM, Chuck R. wrote:

values.each_with_index do |value, index|
quxxo = mock

Any suggestions on how to set expectations for a single mock to receive the same message multiple time with different arguments with the express purpose of validating the arguments?

quxxo.stub(:field2=)
quxxo.should_receive(:field2=).with(1)
quxxo.should_receive(:field2=).with(2)
quxxo.should_receive(:field2=).with(3)

Cheers,
David

On Jun 17, 2010, at 12:22 PM, David C. wrote:

quxxo.should_receive(:field2=).with(1).with(2).with(3)

that doesn’t work either.

Any suggestions on how to set expectations for a single mock to receive the same message multiple time with different arguments with the express purpose of validating the arguments?

quxxo.stub(:field2=)
quxxo.should_receive(:field2=).with(1)
quxxo.should_receive(:field2=).with(2)
quxxo.should_receive(:field2=).with(3)

Ah, so obvious in retrospect. Many thanks…

cr