Spec-Zone.ru › Ruby on Rails 8.1

module ActiveJob::Continuation::TestHelper

Подключенные модули:
ActiveJob::TestHelper

Вспомогательные средства для тестирования заданий ActiveJob::Continuable.

Открытые методы экземпляра

interrupt_job_after_step (job, step, &block) Показать исходный код
# File activejob/lib/active_job/continuation/test_helper.rb, line 65
def interrupt_job_after_step(job, step, &block)
  require_active_job_test_adapter!("interrupt_job_after_step")
  queue_adapter.with(stopping: ->() { after_step?(job, step) }, &block)
end

Interrupt задание после шага.

Обратите внимание: после последнего шага контрольная точка не создаётся, поэтому прервать задание не удастся.

class MyJob < ApplicationJob
  include ActiveJob::Continuable

  cattr_accessor :items, default: []

  def perform
    step :step_one { items << 1 }
    step :step_two { items << 2 }
    step :step_three { items << 3 }
    step :step_four { items << 4 }
  end
end

test "interrupt job after step" do
  MyJob.perform_later
  interrupt_job_after_step(MyJob, :step_two) { perform_enqueued_jobs }
  assert_equal [1, 2], MyJob.items
  perform_enqueued_jobs
  assert_equal [1, 2, 3, 4], MyJob.items
end
interrupt_job_during_step (job, step, cursor: nil, &block) Показать исходный код
# File activejob/lib/active_job/continuation/test_helper.rb, line 36
def interrupt_job_during_step(job, step, cursor: nil, &block)
  require_active_job_test_adapter!("interrupt_job_during_step")
  queue_adapter.with(stopping: ->() { during_step?(job, step, cursor: cursor) }, &block)
end

Interrupt задание во время выполнения шага.

class MyJob < ApplicationJob
  include ActiveJob::Continuable

  cattr_accessor :items, default: []
  def perform
    step :my_step, start: 1 do |step|
      (step.cursor..10).each do |i|
        items << i
        step.advance!
      end
    end
  end
end

test "interrupt job during step" do
  MyJob.perform_later
  interrupt_job_during_step(MyJob, :my_step, cursor: 6) { perform_enqueued_jobs }
  assert_equal [1, 2, 3, 4, 5], MyJob.items
  perform_enqueued_jobs
  assert_equal [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], MyJob.items
end

© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API