[rspec-users] why should_receive behaves differently

David Chelimsky dchelimsky at gmail.com
Tue Nov 16 01:12:04 EST 2010


On Nov 15, 2010, at 10:31 PM, Sai Babu wrote:

> Hi friends
> 
> in my rspec_controller
> 
> 1]@user.articles.should_receive(:find_by_id).with('1').and_return(@article)
> 
> get :show,:id => 1
> 
> in above example 1 if i mention get :show, :id => 1 below the
> schould_receive
> it is working fine
> 
> but
> 2]get :show,:id => 1
> @user.articles.should_receive(:find_by_id).with('1').and_return(@article)
> 
> if i mention in the above way it is raising error!
> 
> Why ?
> What is the reason?
> Could any one explain please ?
> Thanks in advance?

When you say "foo.should_receive(:bar)" you're saying "foo should receive bar sometime between now and the end of this example. The first example, the "get" is doing something that causes @user.articles to receive :find_by_id, but in the second example that's already happened before you set the expectation and does not happen again, so you get a failure message.

HTH,
David


More information about the rspec-users mailing list