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 に答える