使用Redis缓存对功能进行测试的最佳实践是什么?

时间:2018-11-30 12:32:54

标签: ruby-on-rails-4 rspec redis system-testing

在我们应用程序的config / environments / development.rb中,我们拥有

Rails.application.configure do
  # ...
  if ENV['REDIS_URL']
    config.cache_store = :redis_store, ENV['REDIS_URL'], { expires_in: 90.minutes }
  end
end

并在config / environments / test.rb中:

Rails.application.configure do
  # ...
  config.cache_store = :null_store
end

我们在应用程序中使用了一些后台处理方法,例如:

class UserMailer < ApplicationMailer
  # stuff
end

# ...and elsewhere:

class ProfilesController < ApplicationController
  # stuff
  def amend_confirmation
    # more stuff
    UserMailer.increased_pledge(amendment).deliver_later
  end
end

当在测试中遇到此问题时,如果我没有积极地在后台运行Redis(这似乎很难安排,并且可能在我们的CI环境中设置错误),我会收到错误消息

Error connecting to Redis on 127.0.0.1:6379 (Errno::ECONNREFUSED) (Redis::CannotConnectError)

目前,我将仅通过模拟/测试deliver_later消息来解决此问题,但是我怀疑这不是功能测试的好策略,因为显然这不是用户所希望的。在做。有更好的方法吗?

0 个答案:

没有答案