如何为测试目的模拟数据库故障(在Ruby on Rails中)

时间:2011-11-11 15:48:53

标签: ruby-on-rails database unit-testing testing

通过某些监视工具(例如Monit)使用心跳消息使应用程序幸存下来是一种常见的设置。如果应用程序正在运行并且一切正常,它将返回“我还活着”消息,如果数据库失败或Web服务器挂起则不返回任何内容或内部服务器错误(HTTP状态代码500)页面。你怎么能模拟数据库失败来测试Ruby on Rails中的这种行为?如果可以在测试(Test::UnitRSpec)内为测试目的启用/禁用此功能,那将是很好的。

1 个答案:

答案 0 :(得分:6)

看起来可以使用ActiveRecord::Base.remove_connection来模拟数据库故障。使用RSpec,这看起来像:

  describe "GET running" do
    it "renders a 500 if crashed" do
      ActiveRecord::Base.remove_connection
      get :running
      response.response_code.should == 500
      ActiveRecord::Base.establish_connection
    end
  end