2012-02-19 35 views
2

我正在使用片段緩存相當廣泛,並遇到了一些疑難雜症,意外的對象在緩存中被捕獲,並且/或者片段沒有按原計劃過期。我該如何測試使用rSpec的rails分段緩存?

我認爲這將是請求規範的主要候選人,但我不知道的:

  1. 將需要採取哪些措施來模擬緩存被觸發(有效)的情況。
  2. 在測試環境中需要做些什麼調整才能實現緩存。
  3. 緩存是否會持續存在多個規格或rspec是否會自動放棄每個規格之間的緩存?
  4. 最重要的是,有沒有一種方法來確定緩存是否實際服務?
+0

請問您澄清(1)?發出一個GET請求不是一個真實的模擬? – bdon 2012-02-19 05:11:58

+0

@bdon我想我要問的是 - 我需要爲每個「緩存規範」緩存至少兩次獲取請求,一次要驗證?還是有更高效的方法?有可能沒有,但我想知道是否存在或不存在。 – 2012-02-19 05:17:22

+0

即使有另一種方法來加熱你的緩存,似乎解僱兩個請求將是最現實的。單個請求不應該增加測試套件的開銷。 – bdon 2012-02-19 05:20:37

回答

2
  1. 在同一測試用例中發出兩個請求將是最現實的方法。
  2. 您需要在測試環境中啓用緩存,默認情況下它僅在生產環境中打開。理想情況下,不是每個測試套件都需要啓用緩存,因此您需要在套件前/後打開/關閉此功能。看到這個問題:Optionally testing caching in Rails 3 functional tests
  3. 它取決於你的存儲層的緩存片段,但Rails.cache.clear應該足夠聰明。我認爲沒有任何情況下你會希望緩存在規範中持續存在,因爲污染會讓事情變得混亂。
  4. 如果您的片段進行數據庫調用,則將數據庫連接存根在測試中,第一次返回假結果並第二次產生異常。這可以推廣到其他慢速呼叫(例如網絡請求)。
+1

感謝您的徹底迴應! – 2012-02-21 00:04:59