On Wed, Jan 14, 2009 at 3:53 PM, Fernando Perez <[email protected]> wrote:
> Fernando Perez wrote:
>> Hi,
>>
>> From the railscasts website source code, in the episodes_controller_spec
>> I read:
>>
>> it "index action with search should search published episodes" do
>> Episode.expects(:search_published).with('foo').returns(Episode.all)
>> get :index, :search => 'foo'
>> end
>>
>> Here are my questions:
>> - What does the returns(Episode.all) mean?
This calls Episode.all one time and stores the result. When Episode
receives :search_publishe with 'foo', that's what it returns. Make
sense?
>> - Is it stubbing what the search_published method returns?
Yes
>> - Is it useful to add the returns(Episode.all) method call here?
If you don't, nothing will be returned. If the application code relies
on the return value, then it is definitely useful - necessary, in
fact.
>> - Whats the difference with and_return(Episode.all)?
No semantic difference - different library (see below).
>> - Shouldn't we only test for:
>> Episode.expects(:search_published).with('foo')?
No - the returns statement is not part of the expectation - it's the
value to return when search_published is received.
>
> I also forgot to add:
> What's the difference between expects and should_receive? I can get my
> head around it.
Two different mocking libraries:
spec/mocks:
Episode.should_receive(:search_published).with('foo').and_return(Episode.all)
mocha (used in the screen cast):
Episode.expects(:search_published).with('foo').returns(Episode.all)
HTH,
David
> --
> Posted via http://www.ruby-forum.com/.
> _______________________________________________
> rspec-users mailing list
> [email protected]
> http://rubyforge.org/mailman/listinfo/rspec-users
>
_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users