对于特定的后台作业,有没有办法将ActiveJob队列适配器设置为内联?
在我的例子中,我希望在测试中运行一些后台作业来构建集成测试。我不关心作业内部细节,因为我的目的只是运行后台作业并断言结果。然而,这些集成测试并不涵盖所有的后台作业,所以我不想全局设置队列适配器。
发布于 2017-07-01 00:17:33
您可以使用RSpec的around_hook功能:
module WithQueueAdapter
def with_queue_adapter(new_adapter)
around do |example|
begin
old_adapter = ActiveJob::Base.queue_adapter
ActiveJob::Base.queue_adapter = new_adapter
example.run
ensure
ActiveJob::Base.queue_adapter = old_adapter
end
end
end
end
RSpec.configure do |config|
config.extend WithQueueAdapter
end在你的测试中
describe "My cool feature" do
with_queue_adapter :inline
# examples go there
end发布于 2017-01-19 18:47:49
Base的queue_adapter类属性可以在任何作业类上设置,它将影响作业类本身和任何子类。这样你就可以有这样的东西
class JobThatMustRunInlineWhileTesting < ActiveJob::Base
if Rails.env.test?
queue_adapter :inline
end
# rest of your job
endhttps://stackoverflow.com/questions/40597328
复制相似问题