I''m trying to specify that a particular view must render two different partials. My spec looks like: describe AClass do it do template.should_receive(:render).with(:partial => ''foo'', :locals => { ... }) ... end describe ''some conditional case'' do it do template.should_receive(:render).with(:partial => ''bar'', :locals => { ... }) ... end end end Rendering the foo partial passes off fine, but the spec fails when it comes to rendering the bar partial: Mock ''ActionView::Base'' expected :render with ({:partial=>"bar", :locals=>{...}}) but received it with ({:partial=>"foo", :locals=>{...}}) In the view the foo partial is rendered first, and presumably that is being intercepted in the second example and thus failing. How do I avoid this?
Stub out the first one, something like template.stub!(:render) Then, each of your tests set the actual should_receive expectation. -Corey On Fri, Mar 14, 2008 at 8:44 AM, Alan Larkin <alan.larkin at gmail.com> wrote:> I''m trying to specify that a particular view must render two different > partials. > My spec looks like: > > describe AClass do > it do > template.should_receive(:render).with(:partial => ''foo'', :locals => { > ... }) > ... > end > > describe ''some conditional case'' do > it do > template.should_receive(:render).with(:partial => ''bar'', :locals => > { ... }) > ... > end > end > end > > Rendering the foo partial passes off fine, but the spec fails when it > comes to > rendering the bar partial: > > Mock ''ActionView::Base'' expected :render with ({:partial=>"bar", > :locals=>{...}}) but received it with ({:partial=>"foo", :locals=>{...}}) > > In the view the foo partial is rendered first, and presumably that is > being > intercepted in the second example and thus failing. How do I avoid this? > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users >-- http://www.coreyhaines.com The Internet''s Premiere source of information about Corey Haines -------------- next part -------------- An HTML attachment was scrubbed... URL: http://rubyforge.org/pipermail/rspec-users/attachments/20080314/8c357b3a/attachment.html
Corey Haines wrote:> Stub out the first one, something like > > template.stub!(:render) > > Then, each of your tests set the actual should_receive expectation. > > -Corey > > On Fri, Mar 14, 2008 at 8:44 AM, Alan Larkin <alan.larkin at gmail.com > <mailto:alan.larkin at gmail.com>> wrote: > > I''m trying to specify that a particular view must render two > different partials. > My spec looks like: > > describe AClass do > it do > template.should_receive(:render).with(:partial => ''foo'', :locals > => { ... }) > ... > end > > describe ''some conditional case'' do > it do > template.should_receive(:render).with(:partial => ''bar'', > :locals => { ... }) > ... > end > end > end > > Rendering the foo partial passes off fine, but the spec fails when > it comes to > rendering the bar partial: > > Mock ''ActionView::Base'' expected :render with ({:partial=>"bar", > :locals=>{...}}) but received it with ({:partial=>"foo", > :locals=>{...}}) > > In the view the foo partial is rendered first, and presumably that > is being > intercepted in the second example and thus failing. How do I avoid this? > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org <mailto:rspec-users at rubyforge.org> > http://rubyforge.org/mailman/listinfo/rspec-users > > > > > -- > http://www.coreyhaines.com > The Internet''s Premiere source of information about Corey Haines > > > ------------------------------------------------------------------------ > > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-usersThanks.