繁体   English   中英

如何测试 Resque 工作者

[英]How to test Resque worker

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

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

您是否也在使用 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'
  )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM