在我的rails应用程序中,我有一个worker正在读取AWS SQS,然后简单地将另一个worker加入Resque。我正在寻找用RSpec测试它的最好方法。
有没有办法查看模拟Resque队列上的内容?基本上,我只想要一个测试,测试调用SQS worker是否会导致Resque worker。
发布于 2021-01-22 15:55:21
你也在使用Resque从SQS中读取数据吗?如果是这样的话,你可以使用around
钩子来启用Resque的内联模式。(通过这种方式,Resque可以立即执行作业,而无需实际对它们进行排队。)
around do |example|
Resque.inline = true
example.run
Resque.inline = false
end
根据您的代码,您可以检查其他worker是否已完成其工作(例如,它是否通过检查相关记录的计数差异来创建记录),或者您可以只使用RSpec的have_received方法来确保其他worker已通过Resque排队。
allow(Resque).to receive(:enqueue)
SQSWorker.perform
expect(Resque).to have_received(:enqueue).with(
OtherWorker,
optional: 'args'
)
https://stackoverflow.com/questions/65836203
复制相似问题