簡體   English   中英

是否在測試之間清除了Rails.cache?

[英]is Rails.cache purged between tests?

我們在Rails 3.2應用程序中使用Rails.cache緩存id / path映射。 在某些機器上它運行正常,但在其他機器上的值是錯誤的。 原因很難跟蹤,所以我對Rails.cache本身有一些疑問。 它是在測試之間清除的嗎? 是否有可能在測試模式中使用在開發模式中緩存的值? 如果它沒有被清除,我怎么能在運行規范之前做到這一點?

我的緩存存儲配置是:

#in: config/environments/development.rb
config.cache_store = :memory_store, {:size => 64.megabytes}

#in: config/environments/production.rb
# config.cache_store = :mem_cache_store

更有效(也更簡單)的方法是將測試環境的緩存設置為使用NullStore:

# config/environments/test.rb:
config.cache_store = :null_store

NullStore確保不會緩存任何內容。

例如,在下面的代碼中,它將始終通過塊並返回當前時間:

Rails.cache.fetch('time') { Time.now }

另請參閱Rails緩存指南: http//guides.rubyonrails.org/caching_with_rails.html#activesupport-cache-nullstore

加:

before(:all) do
  Rails.cache.clear
end

在每個spec文件運行之前清除緩存。

加:

before(:each) do
  Rails.cache.clear
end

在每個規范之前清除緩存。

您可以將它放在RSpec.configure塊中的spec/spec_helper.rb中,以使其全局應用(推薦使用每個spec文件或大小寫散布它)。

默認情況下,RSpec不會自動清除該緩存。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM