Тестирование ошибки обратного вызова из Delayed::Job с RSpec

Все,

У меня есть пользовательская настройка Delayed::Job, которая использует обратные вызовы success и error для изменения атрибутов объекта, который изменяется в фоновом режиме. Этот объект взаимодействует с внешним 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 настройка для диджея).

Теперь, как мне это проверить? API не возвращает тайм-аут, поэтому я не уверен, как мне нужно обрабатывать это в видеомагнитофоне. Работа диджея не выполняется в очереди, и я не особо хочу, чтобы набор задерживался на 2 минуты при каждом запуске.

Мысли или предложения будут с благодарностью! Спасибо!

0 ответов

Другие вопросы по тегам