2014-10-29 41 views
0

在Dpeci/Capybara請求規範中測試Dalli/Mamcache失敗以驗證我們的應用在Dalli服務器失敗時仍然有效的最佳方式是什麼?我們如何測試Rails 3.2中的dalli/memcachier失敗Rspec請求規範

我們使用達利(在Heroku上的應用程序)來處理某些帳戶數據的緩存在我們的生產應用程序,例如,配置/環境/ 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服務失敗時,希望添加適當的驗證整個應用程序的規範「救助」。

目前,配置/環境/ test.rb沒有設置爲config.cache_store

回答

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 

當我們暫時在幾個地方禁用了我們的異常處理並運行規範,規範失敗(如預期的那樣)。所以它似乎做了伎倆。