14

Railsアプリにカスタムエラーページがあり、404エラーをテストするのは簡単に思えます(存在しないページを取得し、特定のテキストに対してassert_match / selectを実行します)が、500エラーページをテストする方法を知りたいです。

何か案は?

4

4 に答える 4

12

だから私が見つけたのは、rspecでこのようなことができるということでした

def other_error
   raise "ouch!"
end

it "renders 500 on Runtime error" do
  get :other_error
  response.should render_template("errors/500")
  response.status.should == 500
end
于 2012-06-28T22:47:40.407 に答える
8

、およびを使用していると仮定して、私が行うことは次のとおりです。まず、メソッドを呼び出すコントローラー アクションを見つける必要があります。たとえば、を呼び出すアクションを持つ があるUserControllerとします。その場合、次のようなことができます。showUser.find

it "should render the 500 error page when an error happens" do
  # simulate an error in the user page
  User.should_receive(:find).and_raise("some fancy error")
  visit '/user/1'

  # verify status code
  page.status_code.should eql(500)

  # verify layout
  page.title.should eql('Your site title')
  page.should have_css('navigation')
  page.should have_css('.errors')
end
于 2013-04-16T23:15:01.673 に答える