使用RSpec测试Delayed :: Job的错误回调

时间:2014-09-24 13:48:15

标签: ruby-on-rails rspec delayed-job vcr

所有

我有一个自定义的Delayed :: Job设置,它使用成功和错误回调来更改在后台修改的对象的属性。此对象与外部API交互。为了测试这一点,我正在使用带有VCR的RSpec来记录外部API交互。

这是我的工作人员:

class SuperJob < Struct.new(:Thingy_id)
  include JobMethods

  def perform
    thing = Thingy.find(Thingy_id)
    run_update(thing)
  end

  def success(job)
    thing = Thingy.find_by_job_id(job.id)
    thing.update(job_finished_at: Time.now, job_id: nil)
  end

  def error(job, exception)
    thing = Thingy.find_by_job_id(job.id)
    thing.update(job_id: -1, disabled: true)
  end
end

以下是我的DJ设置:

Delayed::Worker.delay_jobs = !Rails.env.test?
Delayed::Worker.max_run_time = 2.minutes

我已成功使用RSpec来测试success回调的结果。我想做的是测试error回调的结果。外部API对响应时间没有任何特定的长度限制,对于我的应用程序,我想将最长等待时间限制为2分钟(如DJ的max_run_time设置中所示)。

现在,我该如何测试? API没有返回超时,因此我不确定如何在VCR中处理此问题。 DJ工作没有在队列中运行,我并不特别希望套件在每次运行时延迟2分钟。

我们将非常感谢您的想法或建议!谢谢!

0 个答案:

没有答案