Я использую colleideidea / delayed_job .В моих тестах RSpec хуки [: before,: after,: success] вызывались не так, как я ожидал.
Когда Delayed::Worker.delay_jobs = true
(по умолчанию), я вижу, как вызывается хук enqueue()
и ничего более.Это поведение, которое я ожидаю, так как нет отдельной задачи, обрабатывающей задания.
Но когда Delayed::Worker.delay_jobs = false
, как рекомендовано для тестирования документами, я вижу, как вызывается мой метод process (), но ни один изкрючки.
Если это не ожидаемое поведение, какие-либо предложения о том, что я делаю неправильно?(Я могу легко включить код.) Если это ожидаемое поведение, то какова стратегия тестирования хуков?
[Примечание: каталог спецификаций для delayed_job, в частности performable_method_spec tests предположим, что вы можете установить Delayed::Worker.delay_jobs = false
и по-прежнему получать обратные вызовы для ваших хуков.Но эти тесты используют конструкцию obj.delay.method
вместо Delayed::Job.enqueue(object_with_a_perform_method)
для постановки задачи в очередь.Будет ли это иметь значение?]
[Обновление: я пробовал как форму obj.delay.method
, так и форму Delayed::Job.enqueue(obj_with_a_perform_method)
- я не вижу, чтобы в любом случае вызывались хуки.] *