2015-10-20 77 views
1

我試圖在我的rspec場景中使用Rails.cache.read和Rails.cache.write helpers,但它不起作用。我正在使用dalli_store進行緩存存儲。 我在任何隨機測試場景中寫道Dalli緩存不起作用rspec

ActionController::Base.perform_caching = true 

,然後運行僅此rspec的。當我跳到下一行的斷點,並嘗試在控制檯

Rails.cache.write("f", "b") => true 
Rails.cache.read("f") => nil 

寫當我做同樣的事情在控制檯開發ENV跑 - 我已經得到了所有預期的結果。它存儲在緩存中的值,並將其返回

回答

0

是達利在你的config /環境/ test.rb環境中配置

config.cache_store = :dalli_store 

?我相信它默認爲:null_store,這意味着您的測試環境不會啓用緩存。另外,請確保在規格運行後將ActionController::Base.perform_caching恢復到原始狀態。

+0

config.cache_store設置爲:dalli_store值。但它沒有幫助。我想可能只是Rails.cache。*助手是行不通的。因爲如果我嘗試像這樣初始化dalli工作人員:CACHE = Dalli :: Client.new('127.0.0.1',{:namespace =>「my_project」,:expires_in => 3600,:socket_timeout => 3,:compress = > true}) - 我可以通過CACHE.set和CACHE.get設置和獲取數據。 –

+0

是否在配置/ environments/** test.rb **文件中專門設置了'config.cache_store'? –

+0

是的。我在test.rb文件中有兩個緩存選項。 config.action_controller.perform_caching = true config.cache_store =:dalli_store –