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