Reputation: 3669
I have following code in an action:
render :file => 'public/404.html' and return
This works fine in the browser. I have written the following rspec example to test this:
it "renders 404" do
get :new
response.should render_template('public/404.html')
end
Running this example results in the following error:
Failure/Error: response.should render_template('public/404.html')
Expected block to return true value.
I have also tried response.should render_template(:file => 'public/404.html')
but that too results in an error.
How should I test this?
Upvotes: 12
Views: 14991
Reputation: 778
You should use:
response.should render_template(:file => "#{Rails.root}/public/404.html")
Upvotes: 21
Reputation: 18835
if you want to show a 404 page, remember to set the status code. this is also what i would test: it { should respond_with :not_found }
instead of rendering the public/404 directly, there are better ways of doing this. have a look at this answer: How to redirect to a 404 in Rails?
Upvotes: 5