【问题标题】:How to test Resque worker如何测试 Resque 工作者
【发布时间】:2021-04-26 09:24:03
【问题描述】:

在我的 rails 应用程序中,我有一个工作人员正在读取 AWS SQS,然后简单地将另一个工作人员排入 Resque。我正在寻找使用 RSpec 进行测试的最佳方法。

有没有办法查看模拟 Resque 队列中的内容?基本上,我只想要一个测试来测试调用 SQS 工作人员是否会导致 Resque 工作人员。

【问题讨论】:

    标签: ruby-on-rails rspec backgroundworker amazon-sqs resque


    【解决方案1】:

    您是否也在使用 Resque 从 SQS 中读取数据?如果是这样,您可以使用around 挂钩来启用 Resque 的内联模式。 (这样,Resque 会立即执行作业,而无需实际排队。)

    around do |example|
      Resque.inline = true
      example.run
      Resque.inline = false
    end
    

    根据您的代码,您可以检查其他工作人员是否已完成其工作(例如,是否通过检查相关记录的计数差异创建了记录),或者您可以使用 RSpec 的have_received方法来确保其他工作人员已被 Resque 排队。

      allow(Resque).to receive(:enqueue)
      SQSWorker.perform
      expect(Resque).to have_received(:enqueue).with(
        OtherWorker,
        optional: 'args'
      )
    

    【讨论】:

      猜你喜欢
      • 2012-07-09
      • 2015-08-19
      • 2010-12-16
      • 2019-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-25
      相关资源
      最近更新 更多