【问题标题】: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'
)