Railsアプリにカスタムエラーページがあり、404エラーをテストするのは簡単に思えます(存在しないページを取得し、特定のテキストに対してassert_match / selectを実行します)が、500エラーページをテストする方法を知りたいです。
何か案は?
Railsアプリにカスタムエラーページがあり、404エラーをテストするのは簡単に思えます(存在しないページを取得し、特定のテキストに対してassert_match / selectを実行します)が、500エラーページをテストする方法を知りたいです。
何か案は?
だから私が見つけたのは、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
rspec、rspec-mocks、およびcapybaraを使用していると仮定して、私が行うことは次のとおりです。まず、メソッドを呼び出すコントローラー アクションを見つける必要があります。たとえば、を呼び出すアクションを持つ があるUserController
とします。その場合、次のようなことができます。show
User.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