首页 文章

我们如何在Rails 3.2 Rspec请求规范中测试dalli / memcachier故障

提问于
浏览
0

在RSpec / Capybara请求规范中测试Dalli / Mamcache故障的最佳方法是什么来验证我们的应用程序在Dalli服务器出现故障时仍能正常工作?

我们使用Dalli(在Heroku应用程序上)来处理我们的 生产环境 应用程序中某些帐户数据的缓存,例如config / environments / production.rb包含:

config.cache_store = :dalli_store

在许多地方的应用程序中,我们使用 Rails.cache.writeRails.cache.fetch

在相当规律的基础上,Heroku Memcachier附加服务变得无响应,我们在日志中看到以下内容:

app[web.2]: xxx.xxx.xxx.heroku.prod.memcachier.com:xxxx failed (count: 0)

我们有一些请求规范测试一些相当长的用户交互场景,涵盖了Rails缓存的所有用途,现在需要添加一些额外的规范来测试这些场景在远程Dalli存储被破坏时的行为...例如,我们想要当我们看到不可避免的Memcachier服务失败时,添加验证整个应用程序的规范“抢救” .

目前,config / environments / test.rb没有config.cache_store的设置

1 回答

  • 0

    不知道这是不是最好的方式,但我们做的是:

    before (:each) do
            # test to ensure works OK if cache is broken due to heroku memcachier failure
          Rails.cache.stub(:write).and_raise("CACHE WRITE IS BROKEN")
          Rails.cache.stub(:fetch).and_raise("CACHE FETCH IS BROKEN")
          Rails.cache.stub(:read).and_raise("CACHE READ IS BROKEN")
          Rails.cache.stub(:delete).and_raise("CACHE DELETE IS BROKEN")
      end
    

    当我们在一些地方暂时禁用我们的异常处理并运行规范时,规范会失败(如预期的那样) . 所以它似乎做了伎俩 .

相关问题