Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to test render :file => 'public/404.html' in Rspec 2?

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?

like image 564
Chandranshu Avatar asked Jul 12 '12 11:07

Chandranshu


2 Answers

You should use:

response.should render_template(:file => "#{Rails.root}/public/404.html")
like image 72
Kamil Bednarz Avatar answered Sep 23 '22 10:09

Kamil Bednarz


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?

like image 37
phoet Avatar answered Sep 24 '22 10:09

phoet