可能原因是使用了Testing::inline!会在测试时直接执行Sidekiq的任务,而在其他测试中可能是通过异步方式进行执行。需要检查测试中是否有关于异步任务的代码,并重新考虑如何进行测试。可以尝试在测试中使用Sidekiq的测试库来进行任务的控制和断言。以下是一个可能的解决方法示例:
require 'sidekiq/testing'
describe MyClass do
# 在所有测试中使用 Testing::inline!
before { Sidekiq::Testing.inline! }
it "performs a Sidekiq job" do
# 任何要执行的 Sidekiq 任务
MyClass.perform_async("hello", 123)
# 等待 Sidekiq 任务结束
Sidekiq::Worker.drain_all
# 断言任务执行成功
expect(MyClass).to have_enqueued_job("hello", 123)
end
end