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

Michael Trier mtrier at eminentconsultinggroup.com
Wed Apr 11 19:46:44 EDT 2007


On Apr 11, 2007, at 7:44 PM, aslak hellesoy wrote:

> 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?

Sounds good.  Thanks aslak.  This will help out a lot.

Michael

>>>
>>> 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
>>
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users



More information about the rspec-users mailing list