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
with a 404 for unfound records.
Whenever I run the spec, the ActiveRecord::RecordNotFound exception is
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
mode. However, this does not seem to trigger rails into handling this
redirect to 404 even though the @request.remote_addr gets set to
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
My full example: (using factory_girl, rspec mocks and devise)
it “respons with 404 when trying to edit non-existing reads” do
get :edit, :id => 2
response.status.should eql 404
and the exception:
- ReadsController resources respons with 404 for non existing reads for
Failure/Error: get :edit, :id => 2