Evitar que Sidekiq imprima “(…) INFORMACIÓN:Cliente Sidekiq con opciones de redis {}” en pruebas
-
26-12-2019 - |
Pregunta
Utilizo el marco de pruebas predeterminado de Rails 4 y he escrito algunas pruebas que también esperan que Sidekiq trabaje en segundo plano.Pero cuando corro rake test
Los resultados de mi prueba se ven así:
.............2014-08-01T05:40:52Z 12000 TID-abcdef123 INFO: Sidekiq client with redis options {}
.....................................
Finished in 3.0s, 9.000 runs/s, 150.000 assertions/s.
30 runs, 400 assertions, 0 failures, 0 errors, 0 skips
Esto se ve bien con las pruebas, pero el registro del trabajador de Sidekiq es realmente molesto.Para evitar que ocurra este registro, probé esto en mi clase de trabajador:
class MyWorker
include Sidekiq::Worker
sidekiq_options queue: :my_queue
def initialize
Rails.logger.level = 2 # set to :warn level
super
end
def perform(movie_id)
# Rails.logger.level = 0 # set back to :debug level?
# some code
end
end
Con tanto el Rails.logger.level
línea comentada y descomentada, pero la línea registrada no desapareció. ¿Cómo puedo evitar que Sidekiq registre esto cuando lo ejecuto? rake test
?
Solución
Puede agregar la siguiente línea a su inicializador sidekiq (config/initializers/sidekiq.rb
) para apagarlo:
if Rails.env.test?
Sidekiq.logger.level = Logger::WARN
end
Otros consejos
La recomendación oficial de
https://github.com/mperham/sidekiq/wiki/Logging#turning-off-logging-in-the-test-environment
es usar
require 'sidekiq/testing'
Sidekiq::Logging.logger = nil
Esto podría ir en tu spec/rails_helper.rb
si usa rspec y rieles.