On Wed, Jan 14, 2009 at 3:53 PM, Fernando Perez <li...@ruby-forum.com> 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 > rspec-users@rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users > _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users