我使用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
现在这个测试看起来很好,但是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
Rails.logger.level
行注释和取消注释,但记录的行没有消失。 如何使用rake test
阻止Sidekiq记录此内容?
答案 0 :(得分:3)
您可以将以下行添加到sidekiq初始化程序(config/initializers/sidekiq.rb
)以将其关闭:
if Rails.env.test?
Sidekiq.logger.level = Logger::WARN
end
答案 1 :(得分:0)
来自
的官方建议https://github.com/mperham/sidekiq/wiki/Logging#turning-off-logging-in-the-test-environment
是使用
require 'sidekiq/testing'
Sidekiq::Logging.logger = nil
如果使用rspec和rails,则可以在spec/rails_helper.rb
中使用。