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

时间:2012-06-27 03:37:37

标签: ruby-on-rails

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

有什么想法吗?

4 个答案:

答案 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)

这是我的工作,假设您正在使用: 首先,您需要找到一个调用方法的控制器操作。例如,您可能会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