11

我在一个动作中有以下代码:

render :file => 'public/404.html' and return

这在浏览器中工作正常。我编写了以下 rspec 示例来测试它:

  it "renders 404" do
    get :new
    response.should render_template('public/404.html')
  end

运行此示例会导致以下错误:

 Failure/Error: response.should render_template('public/404.html')
   Expected block to return true value.

我也尝试过response.should render_template(:file => 'public/404.html'),但这也会导致错误。

我应该如何测试这个?

4

2 回答 2

20

你应该使用:

response.should render_template(:file => "#{Rails.root}/public/404.html")
于 2012-07-23T09:05:23.530 回答
5

如果要显示404页面,记得设置状态码。这也是我要测试的:it { should respond_with :not_found }

除了直接渲染 public/404 之外,还有更好的方法可以做到这一点。看看这个答案:如何在 Rails 中重定向到 404?

于 2012-07-12T13:18:42.963 回答