[rspec-users] redirection doesn't get detected well?

aslak hellesoy aslak.hellesoy at gmail.com
Wed Apr 11 19:44:44 EDT 2007


On 4/12/07, David Chelimsky <dchelimsky at gmail.com> wrote:
> On 4/11/07, Matthijs Langenberg <mlangenberg at gmail.com> wrote:
> > I think that's the only way and it is quit simple:
> >
> > OrderProductsController.class_eval do
> >   def rescue_action(e) raise e end;
> > end
> >
> > 1)
> > Spec::Mocks::MockExpectationError in 'DELETE on
> > /order_products?order_id=3&product_id=6 should destroy order_product
> > with order_id==3 and product_id==6 and redirect to /orders/3.'
> > OrderProduct expected :find with (:first, {:conditions=>{:order_id=>3,
> > :product_id=>"6"}}) but received it with (:first,
> > {:conditions=>{:order_id=>"3", :product_id=>"6"}})
> > /Users/mlangenberg/Documents/rails/pos/config/../app/controllers/order_products_controller.rb:3:in
> > `destroy'
> > ./spec/controllers/order_products_controller_spec.rb:17:
> >
> > Finished in 0.055156 seconds
> >
> > 1 example, 1 failure
> >
> > Now I wouldn't mind if the controller_name method does this type of
> > monkeypatching, it saves me a lot of debugging.
>
> Interestingly enough, we had that in there and it was recently removed:
>
> http://rubyforge.org/tracker/?func=detail&group_id=797&aid=9767&atid=3149
>
> We could make that configurable, but I certainly don't want to simply
> add it back in. WDYT?
>

I'm working on adding it back in - this time a little smarter. It will
only reraise the exception if it is a mock exception, otherwise it
will be handled by Rails.

Makes sense?

Aslak

> >
> > On 4/12/07, David Chelimsky <dchelimsky at gmail.com> wrote:
> > > On 4/11/07, aslak hellesoy <aslak.hellesoy at gmail.com> wrote:
> > > > On 4/11/07, Matthijs Langenberg <mlangenberg at gmail.com> wrote:
> > > > > Thanks for the hint David, when I looked at response.body I saw the
> > > > > following HTML passing by:
> > > > >
> > > > > <pre>OrderProduct expected :find with (:first, {:conditions=>
> > > > > {:order_id=>3, :product_id=>6}}) but received it with (:first,
> > > > > {:conditions=>{:order_id=>"3", :product_id=>"6"}})</pre>
> > > > >
> > > > > Which makes totally sense since params["order_id"] and
> > > > > params["product_id"] indeed are String objects instead of Fixnum
> > > > > objects, however, shouldn't this expectation error raise earlier and
> > > > > make that expectation fail instead of the response.should be_redirect
> > > > > expectation?
> > > >
> > > > RSpec doesn't invoke actions directly - it invokes them via Rails.
> > > > Rails catches any exceptions that happen in a controller action and
> > > > prints the backtrace to the response.
> > > >
> > > > Would it make sense if we found a way to at least let mock errors
> > > > ripple through and back to RSpec?
> > >
> > > You mean monkey patch Rails to not catch mock failures? That sounds scary.
> > >
> > > >
> > > > Aslak
> > > >
> > > > >
> > > > > On 4/11/07, David Chelimsky <dchelimsky at gmail.com> wrote:
> > > > > > On 4/11/07, Matthijs Langenberg <mlangenberg at gmail.com> wrote:
> > > > > > > I'm doing a redirect in one of my controller actions and somehow I can't
> > > > > > > spec it, see this pastie: http://pastie.caboo.se/53120.
> > > > > > > When following the link from a browser I'm being redirected to the right
> > > > > > > page.
> > > > > >
> > > > > > First of all - nice example!
> > > > > >
> > > > > > Secondly, this looks like it should work. What's actually in the response?
> > > > > >
> > > > > > ...
> > > > > > it "should destroy order_product with order_id==3 and product_id==6
> > > > > > and redirect to /orders/3." do
> > > > > >     @order_product.should_receive(:destroy)
> > > > > >     delete 'destroy', :id => 'nil', :order_id => 3, :product_id => 6
> > > > > >     puts response.inspect
> > > > > >     response.should be_redirect
> > > > > >   end
> > > > > > ...
> > > > > >
> > > > > > >
> > > > > > > _______________________________________________
> > > > > > > rspec-users mailing list
> > > > > > > rspec-users at rubyforge.org
> > > > > > > http://rubyforge.org/mailman/listinfo/rspec-users
> > > > > > >
> > > > > > _______________________________________________
> > > > > > rspec-users mailing list
> > > > > > rspec-users at rubyforge.org
> > > > > > http://rubyforge.org/mailman/listinfo/rspec-users
> > > > > >
> > > > > _______________________________________________
> > > > > rspec-users mailing list
> > > > > rspec-users at rubyforge.org
> > > > > http://rubyforge.org/mailman/listinfo/rspec-users
> > > > >
> > > > _______________________________________________
> > > > rspec-users mailing list
> > > > rspec-users at rubyforge.org
> > > > http://rubyforge.org/mailman/listinfo/rspec-users
> > > >
> > > _______________________________________________
> > > rspec-users mailing list
> > > rspec-users at rubyforge.org
> > > http://rubyforge.org/mailman/listinfo/rspec-users
> > >
> > _______________________________________________
> > rspec-users mailing list
> > rspec-users at rubyforge.org
> > http://rubyforge.org/mailman/listinfo/rspec-users
> >
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
>


More information about the rspec-users mailing list