我在我的Rails應用程序中有一個自定義的錯誤頁面,測試404錯誤似乎足夠向前(獲取不存在的頁面,併爲某些文本執行assert_match/select),但我想知道如何測試500錯誤頁面。有沒有辦法在Rails中編寫500個錯誤頁面的測試?
任何想法?
我在我的Rails應用程序中有一個自定義的錯誤頁面,測試404錯誤似乎足夠向前(獲取不存在的頁面,併爲某些文本執行assert_match/select),但我想知道如何測試500錯誤頁面。有沒有辦法在Rails中編寫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
爲了澄清,你有些控制器上的想象'other_error'方法,而不是在你的RSpec測試一個輔助方法,對嗎?我很喜歡後者的工作,但認爲這是一個夢想。 –