On Sat, Sep 6, 2008 at 8:55 AM, Craig Jolicoeur <[EMAIL PROTECTED]> wrote: >>>First off - should_receive *is* a test - why would you write a test in > the setup? > > Not sure what you mean by that. I'm not writing a test in the setup > routine.
should_receive is an expectation which could pass or fail. I think that's what Scott meant by writing a test in setup (before(:each)). It's something you generally want to avoid because it makes it more difficult to understand failures if they're not right in the actual code examples. > Also, I'm not setting an expectation on a method call. should > render_file is in the right place. You're not *now*, but you could. > > On Sep 5, 11:48 pm, Scott Taylor <[EMAIL PROTECTED]> > wrote: >> On Sep 5, 2008, at 10:18 PM, Craig P Jolicoeur wrote: >> >> >> >> > I'm having some trouble trying to spec some methods in my Rails >> > application controller. >> >> > I'm new to rspec converting over from straight test::unit. >> >> > Here is the method in my application.rb controller that I'm trying >> > to spec >> >> > def render_403 >> > logger.debug "Returned 403: #{request.request_uri}" >> > render :file => "#{RAILS_ROOT}/public/403.html", :status => '403' >> > end >> >> > Here is my *current* spec >> >> > describe "handling render 403" do >> >> > before(:each) do >> >> > controller.request.should_receive(:request_uri).and_return('response >> > request_uri') >> > end >> >> First off - should_receive *is* a test - why would you write a test in >> the setup? >> >> >> >> > it "should render the 403 error page" do >> > controller.render_403 >> > response.should render_file("#{RAILS_ROOT}/public/403.html") >> > end >> >> Two issues with this test: >> >> 1. Normally, if you are going to write a test checking that a method >> is called on an object (should_receive), you'd write that assertion >> before you perform any action. For example: >> >> an_object.should_receive(:a_method_call) >> an_object.a_method_call >> >> would pass >> >> but >> >> an_object.a_method_call >> an_object.should_receive(:a_method_call) >> >> would fail >> >> 2. Usually, you make a request in controller specs, like >> "get :render_404". See the controller docs on the rspec site. >> >> Hope that helps, >> >> Scott >> >> _______________________________________________ >> rspec-users mailing list >> [EMAIL PROTECTED]://rubyforge.org/mailman/listinfo/rspec-users > _______________________________________________ > 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