防止 Sidekiq 在测试中打印“(...) INFO: Sidekiq client with redis options {}”

Jee*_*hut 3 testing logging ruby-on-rails sidekiq

我使用 Rails 4 默认测试框架并编写了一些测试,这些测试也希望 Sidekiq 在“后台”做一些工作。但是当我运行时,rake test我的测试结果如下所示:

.............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
Run Code Online (Sandbox Code Playgroud)

现在测试看起来不错,但是 Sidekiq 工人的日志真的很烦人。为了防止这个日志发生,我在我的工人班上试过这个:

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
Run Code Online (Sandbox Code Playgroud)

Rails.logger.level注释和取消注释的行,但记录的行并没有消失。在运行时如何防止 Sidekiq 记录此内容rake test

inf*_*sed 5

您可以将以下行添加到您的 sidekiq 初始值设定项 ( config/initializers/sidekiq.rb) 以将其关闭:

if Rails.env.test?
  Sidekiq.logger.level = Logger::WARN
end
Run Code Online (Sandbox Code Playgroud)