所有
我有一个自定义的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分钟。
我们将非常感谢您的想法或建议!谢谢!