Тестирование ошибки обратного вызова из 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 минуты при каждом запуске.
Мысли или предложения будут с благодарностью! Спасибо!