如何使用Rspec测试后台作业(Sidekiq)?

19

我的应用程序的一大部分依赖于后台作业来处理用户的网站,因此我需要编写一些测试来覆盖这些工作。

第一个问题是如何测试在Sidekiq工作者类中的代码,例如app/workers/some_worker.rb

class SomeWorker
  include Sidekiq::Worker

  def perform(model_id)
    ...
  end
end
其次,我该如何桩代码(例如以下代码),以便我不需要实际运行工作程序并减慢测试速度?

其次,我该如何桩代码(例如以下代码),以便我不需要实际运行工作程序并减慢测试速度?

response = HTTParty.get("http://users-site.com", timeout: 30)
3个回答

15

糟糕,我错过了,我看到我可以使用work = HardWorker.new; work.perform(1, 2)来运行代码。但是仍然不确定如何为测试伪造外部网站。 - mind.blank
1
上述的Sidekiq测试维基页面:https://github.com/mperham/sidekiq/wiki/Testing。 - Sarah Vessels
@mind.blank请查看VCR以进行API调用的存根化。 - Ruy Diaz

10

看一下我编写的rspec-sidekiq宝石,它可以完美地测试Sidekiq工作者。


3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接