[rspec-users] AmbiguousReturnError

David Chelimsky dchelimsky at gmail.com
Sun Mar 14 16:11:30 EDT 2010


On Mar 14, 2010, at 2:20 PM, barunio wrote:

> I'm trying to use RSpec to test some screen-scraping code.  Because I
> don't want to hit external websites for my tests, I'm stubbing out the
> html I expect to receive, and trying to focus my tests on making sure
> the code is parsing the html correctly, and submitting the correct
> values when requesting external pages.
> 
> However, I'm running into a problem.  The following code causes RSpec
> to raise a "Spec::Mocks::AmbiguousReturnError" exception:
> 
> @agent.should_receive(:submit) do |form, form_button|
>  form.class.should == Mechanize::Form
>  form.username.should == 'username'
>  form.password.should == 'password'
> end.and_return(@bad_login_page)


When you pass a block to should_receive or stub, rspec wants to return the value returned by the block:

@agent.should_receive(:submit) do |form, form_button|
  form.class.should == Mechanize::Form
  form.username.should == 'username'
  form.password.should == 'password'
  @bad_login_page
end

HTH,
David

> 
> Am I doing something incorrectly here, or is the problem just that
> RSpec doesn't like for explicit return values to be specified when a
> block is supplied to the message expectation?  If it is the latter,
> what would be the recommendation for how to appropriately write this
> spec?
> 
> Thanks.


More information about the rspec-users mailing list