有没有办法在Rails中为500错误页面编写测试?

con*_*t47 14 ruby-on-rails

我在我的rails应用程序中有一个自定义错误页面测试404错误似乎很直接(获取不存在的页面并对某些文本执行assert_match/select)但我想知道如何测试500错误页面.

有任何想法吗?

con*_*t47 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
Run Code Online (Sandbox Code Playgroud)


alf*_*alf 7

这就是我所做的,假设你使用的是,:首先,你需要找到一个调用方法的控制器动作.例如,您可能有一个调用UserControllershow动作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
Run Code Online (Sandbox Code Playgroud)