如何在测试环境中设置 dalli 缓存?

meg*_*gas 5 caching ruby-on-rails dalli

我将使用 Dalli 缓存作为键值存储。

通常在生产和开发环境中,我们有线路

config.cache_store = :dalli_store
Run Code Online (Sandbox Code Playgroud)

那么我们可以使用Rails.cache构造来读取和写入缓存。

但是通常在测试环境中,我们没有这个配置行。

在测试环境中设置缓存以测试我的存储逻辑的正确方法是什么?

PS我正在使用Linux(Ubuntu)

job*_*wat 5

dalli 是缓存服务 (memcached) 的客户端,无论环境如何,都可以全局设置它,即在您的 config/application.rb 中

config.cache_store = :dalli_store
Run Code Online (Sandbox Code Playgroud)

在测试环境中停用缓存是一种常见的方法,请检查 config/environments/test.rb

config.action_controller.perform_caching = false
Run Code Online (Sandbox Code Playgroud)

所以你可以在测试环境中启用它,但它可能会导致一些奇怪的冲突,最好的可能是只为特定规格启用它:

before do # enable caching
  @caching_state = ActionController::Base.perform_caching
  ActionController::Base.perform_caching = true
end

after do # disable caching
  ActionController::Base.perform_caching = @caching_state
end
Run Code Online (Sandbox Code Playgroud)