mrz*_*asa 43 ruby caching rspec ruby-on-rails
我们Rails.cache在Rails 3.2应用程序中使用缓存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
jau*_*tin 67
更有效(也更简单)的方法是将测试环境的缓存设置为使用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
mrz*_*asa 45
加:
before(:all) do
  Rails.cache.clear
end
在每个spec文件运行之前清除缓存.
加:
before(:each) do
  Rails.cache.clear
end
在每个规范之前清除缓存.
你可以把这个里面spec/spec_helper.rb的内RSpec.configure块有它全局应用(建议在每个规格文件或情况下散播).
默认情况下,RSpec不会自动清除该缓存.
| 归档时间: | 
 | 
| 查看次数: | 19714 次 | 
| 最近记录: |