[英]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.