Hello,

I'm new to rails and I'm trying to wrap my heads around how to spec
controllers using RSpec (using rails 3rc1 and rspec 2.0.0.beta.19).




The problem I've run into is when I want to test that my controllers respond
with a 404 for unfound records.
Whenever I run the spec, the ActiveRecord::RecordNotFound exception is not
caught by rails, causing the  spec example to fail since the exception
propagates out of the controller into the spec.



>From googling around I get that rails only handles the exceptions and does a
404 response when it's run in production mode, and that you need to call
rescue_action_in_public! in your example if you want this behavior for test
mode. However, this does not seem to trigger rails into handling this with a
redirect to 404 even though the @request.remote_addr gets set to
208.77.188.166.



Do I need to set something up for rails to trigger 404 redirecting of
RecordNotFound? Or is this not at all the correct way to test missing
records?



My full example: (using factory_girl, rspec mocks and devise)



it "respons with 404 when trying to edit non-existing reads" do
   rescue_action_in_public!
   sign_in(@user)
   Read.should_receive(:find_by_id_and_user_id!).with(2,
@user.id).and_raise(ActiveRecord::RecordNotFound)

   get :edit, :id => 2
   response.status.should eql 404
 end




and the exception:


1) ReadsController resources respons with 404 for non existing reads for GET
/reads/2/edit
    Failure/Error: get :edit, :id => 2
    ActiveRecord::RecordNotFound


Thanks,
/Christoffer
-- 
View this message in context: 
http://old.nabble.com/testing-404-redirects-in-the-controller-with-rspec-beta-19-tp29385087p29385087.html
Sent from the rspec-users mailing list archive at Nabble.com.
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to