ruby 如何测试Sidekiq死亡处理程序?

mjqavswn  于 2023-01-25  发布在  Ruby
关注(0)|答案(1)|浏览(123)

如何从RSpec访问Sidekiq的death_handlers
config/initializers/sidekiq.rb

Sidekiq.configure_server do |config|
  # ...

  config.death_handlers << lambda { |job, ex|
    throw "Retries exhausted on #{job['class']} #{job['jid']}: #{ex.inspect}."
  }
end

已尝试将recommendations用于ActiveJob的retry_on,但未成功。
还尝试了within_sidekiq_retries_exhausted_blockrspec-sidekiq,但失败,因为作业类没有此方法。

gywdnpxw

gywdnpxw1#

要测试death_handler行为,我建议在本地使作业失败,然后检查标准输出,看看death_handler proc是否按预期运行。
你可以在本地运行Sidekiq,然后同时运行一个你知道会失败的作业(可能通过你的rails控制台)(你可以在perform方法中引发异常),你应该在rails控制台窗口中看到death_handler proc的输出。
关于你的陈述:
还在rspec-sidekiq的_sidekiq_retries_exhausted_block内尝试,但失败,表示作业类没有此方法。
这是因为ActiveJob不支持sidekiq_retries_exhausted块,因此,用于测试sidekiq_retries_exhausted块的within_sidekiq_retries_exhausted_block方法不会测试任何内容。

相关问题