[rspec-users] chain argument expectations?

David Chelimsky dchelimsky at gmail.com
Thu Jun 17 13:22:07 EDT 2010


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

> 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?

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

Cheers,
David



More information about the rspec-users mailing list