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
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users