On Fri, Nov 7, 2008 at 5:17 PM, Russell Norris <[EMAIL PROTECTED]> wrote: > Zach, > > Thank you so much. That works for me. > > I'm still confused why stubbing all calls to :bar on @foo would allow > @foo.should_receive(:bar).with(:baz) when this doesn't work though. But I > feel like I'm looking a gift horse in the mouth here!
The reason this doesn't work is because rspec's "render" method in your view example is just wrapping a call to the actual template. Here's what I mean. Given your example: it "should work" do template.stub!(:render) template.should_receive(:render).with(:partial => "foo") render @template_with_render_partial_foo # in your view you call <%= render :partial => "foo" %> end Here's what it is really doing: it "should work" do @controller.template.stub!(:render) @controller.template.should_receive(:render).with(:partial => "foo") @controller.template.render @template_with_render_partial_foo # in your view you call <%= render :partial => "foo" %> @controller.template.render :partial => "foo" end The @controller.template is the actual template that gets rendered. The "render" call in your example is made on the same template object that the actual "render :partial" call is made on. So, when you make the call to render the @template_with_render_partial_foo you have stubbed out that render method and it never actually renders anything causing your example to fail because it never gets to the view template that calls 'render :partial => "foo"' Hopefully this helps clear it up? -- Zach Dennis http://www.continuousthinking.com http://www.mutuallyhuman.com _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users