全部,
我有一个自定义的 Delayed::Job 设置,它使用成功和错误回调来更改在后台修改的对象的属性。此对象正在与外部 API 交互。为了测试这一点,我使用 RSpec 和 VCR 来记录外部 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 分钟(如max_run_time
DJ 设置中所示)。
现在,我该如何测试呢?API 没有返回超时,所以我不确定我需要如何在 VCR 中处理这个。DJ 作业没有在队列中运行,我特别不希望套件在每次运行时延迟 2 分钟。
想法或建议将不胜感激!谢谢!