Как лучше всего тестировать функциональность Rails-работников с кешем Redis? - PullRequest
0 голосов
/ 30 ноября 2018

В нашем config / environment / 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 / environment / 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)

В настоящее время я собираюсь разобраться с этим, просто посмеявшись / протестировав сообщение delivery_later, но я подозреваю, что это не такЭто отличная стратегия для тестирования функций, поскольку, очевидно, это не то, что будет делать пользователь.Есть ли лучший подход?

...