2

全部,

我有一个自定义的 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_timeDJ 设置中所示)。

现在,我该如何测试呢?API 没有返回超时,所以我不确定我需要如何在 VCR 中处理这个。DJ 作业没有在队列中运行,我特别不希望套件在每次运行时延迟 2 分钟。

想法或建议将不胜感激!谢谢!

4

0 回答 0