首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于特定作业的ActiveJob内联队列适配器

用于特定作业的ActiveJob内联队列适配器
EN

Stack Overflow用户
提问于 2016-11-15 04:32:40
回答 2查看 1.3K关注 0票数 1

对于特定的后台作业,有没有办法将ActiveJob队列适配器设置为内联?

在我的例子中,我希望在测试中运行一些后台作业来构建集成测试。我不关心作业内部细节,因为我的目的只是运行后台作业并断言结果。然而,这些集成测试并不涵盖所有的后台作业,所以我不想全局设置队列适配器。

EN

回答 2

Stack Overflow用户

发布于 2017-07-01 00:17:33

您可以使用RSpec的around_hook功能:

代码语言:javascript
运行
复制
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

在你的测试中

代码语言:javascript
运行
复制
describe "My cool feature" do
  with_queue_adapter :inline

  # examples go there
end
票数 3
EN

Stack Overflow用户

发布于 2017-01-19 18:47:49

Base的queue_adapter类属性可以在任何作业类上设置,它将影响作业类本身和任何子类。这样你就可以有这样的东西

代码语言:javascript
运行
复制
class JobThatMustRunInlineWhileTesting < ActiveJob::Base
  if Rails.env.test?
    queue_adapter :inline
  end

  # rest of your job
end
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40597328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档