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?
You should use:
response.should render_template(:file => "#{Rails.root}/public/404.html")
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?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With