Nick Hoffman
2009-Jan-27 16:03 UTC
[rspec-users] [RSpec] Error when returning multiple values from a stub
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
Nick Hoffman
2009-Jan-27 16:10 UTC
[rspec-users] [RSpec] Error when returning multiple values from a stub
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, > NickI just realised that breaking SubtitleFile.stub!(:new).and_return @sf1, @sf2 into two stubs causes the second call to #stub! to override the first, which obviously causes problems, and thus doesn''t provide an interim solution. -Nick
Nick Hoffman
2009-Jan-28 18:29 UTC
[rspec-users] [RSpec] Error when returning multiple values from a stub
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, > NickI''ve managed to cut even more code from the controller and specs while continuing to reproduce the problem: http://gist.github.com/53389 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. Nick