我在rails应用程序中有一个自定义错误页面测试404错误似乎很直接(获取不存在的页面并对某些文本执行assert_match / select)但我想知道如何测试500错误页面。
有什么想法吗?
答案 0 :(得分: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
答案 1 :(得分:7)
这是我的工作,假设您正在使用rspec,rspec-mocks和capybara:
首先,您需要找到一个调用方法的控制器操作。例如,您可能会UserController
的{{1}}操作调用show
。在这种情况下,你可以这样做:
User.find
答案 2 :(得分:0)
如果您使用的是rspec,则可以使用controller
块并在其中定义一些测试中的测试动作:
describe ApplicationController, type: :controller do
controller do
def index
fail 'Something bad happened'
end
end
it 'returns an error page'
get :index
expect(response.status).to eq 500
expect(response).to render_template 'errors/500'
end
end
type: :controller
很重要,否则RSpec不会公开controller
方法(尽管您可能已经在这样做了)。
答案 3 :(得分:0)
allow(User).to receive(:find).and_raise('500 error')
get "/users/#{user.id}"
expect(response.status).to eq 500