Hi,>From the railscasts website source code, in the episodes_controller_specI 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? - Is it stubbing what the search_published method returns? - Is it useful to add the returns(Episode.all) method call here? - Whats the difference with and_return(Episode.all)? - Shouldn''t we only test for: Episode.expects(:search_published).with(''foo'')? -- Posted via http://www.ruby-forum.com/.
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? > - Is it stubbing what the search_published method returns? > - Is it useful to add the returns(Episode.all) method call here? > - Whats the difference with and_return(Episode.all)? > - Shouldn''t we only test for: > Episode.expects(:search_published).with(''foo'')?I also forgot to add: What''s the difference between expects and should_receive? I can get my head around it. -- Posted via http://www.ruby-forum.com/.
David Chelimsky
2009-Jan-14 22:42 UTC
[rspec-users] Documentation about the returns method
On Wed, Jan 14, 2009 at 3:53 PM, Fernando Perez <lists at 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 at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users >
David Chelimsky wrote:> On Wed, Jan 14, 2009 at 3:53 PM, Fernando Perez <lists at ruby-forum.com> > wrote: >>> >>> Here are my questions: >>> - What does the returns(Episode.all) mean? >Okay I get it now. Thank you very much. -- Posted via http://www.ruby-forum.com/.