On Jun 13, 2011, at 8:29 PM, S Ahmed wrote:

"How to mock when there seems to be a requirement for chained mocked calls?"

There is no such requirement unless you are imposing it by your own design 
decisions.

> I want to mock the following:
> 
> MyModel.where(".....").last

Why do you want to do this? Is this in a model spec? A controller spec?

> I tried:
> 
> MyModel.should_receive(:where).and_return(nil)
> 
> but this of course doesn't match the expectation since the call to .last was 
> not mapped in the mock code.  
> 
> How can I do this?

You _can_ stub (not mock) chains like this:

MyModel.stub_chain(:where, :last).and_return(xxx)

You can also set chained expectations like this (but I wouldn't recommend it):

ar_query = double('ar_query')
ar_query.should_receive(:last).and_return(nil)
MyModel.stub(:where).and_return(ar_query)

HTH,
David


_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to