[rspec-users] [RSpec] Error when returning multiple values from a stub

Nick Hoffman nick at deadorange.com
Wed Jan 28 13:29:41 EST 2009

On 27/01/2009, at 11:03 AM, Nick Hoffman wrote:
> Hey guys. I've just found some odd behaviour within RSpec 1.1.12 ,  
> and would like to know whether this is a bug, or I'm doing something  
> wrong.
> When I give multiple return values to a stub, like this:
>  SubtitleFile.stub!(:new).and_return @sf1, @sf2
> RSpec complains:
>  Mock 'SubtitleFile_1001' received unexpected message :size with (no  
> args)
> However, if I break that into two stubs, like this:
>  SubtitleFile.stub!(:new).and_return @sf1
>  SubtitleFile.stub!(:new).and_return @sf2
> the spec passes.
> I've posted a more concrete example here:
> http://gist.github.com/53389
> In code pane #2, if I comment line 13 and uncomment lines 14 and 15,  
> the spec passes.
> Any idea what's going on? Thanks for your help,
> Nick

I've managed to cut even more code from the controller and specs while  
continuing to reproduce the problem:

If I change this line:
   SubtitleFile.stub!(:new).and_return @sf1, @sf2
to this:
   SubtitleFile.stub!(:new).and_return @sf1
then the problem disappears.

Why does providing a second argument to #and_return cause #size to be  
called on the "@sf1" mock?

Thanks in advance for any help with this, guys.

More information about the rspec-users mailing list