Chandranshu
Chandranshu

Reputation: 3669

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?

Upvotes: 12

Views: 14991

Answers (2)

Kamil Bednarz
Kamil Bednarz

Reputation: 778

You should use:

response.should render_template(:file => "#{Rails.root}/public/404.html")

Upvotes: 21

phoet
phoet

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

Related Questions