perform_enqueued_jobs
- 1.0.0
- 1.1.6
- 1.2.6
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.8
- 3.0.0
- 3.0.9
- 3.1.0
- 3.2.1
- 3.2.8
- 3.2.13
- 4.0.2
- 4.1.8
- 4.2.1 (0)
- 4.2.7 (0)
- 4.2.9 (0)
- 5.0.0.1 (0)
- 5.1.7 (25)
- 5.2.3 (16)
- 6.0.0 (38)
- 6.1.3.1 (5)
- 6.1.7.7 (0)
- 7.0.0 (0)
- 7.1.3.2 (9)
- 7.1.3.4 (0)
- What's this?
perform_enqueued_jobs(only: nil, except: nil, queue: nil, at: nil, &block)
public
Performs all enqueued jobs. If a block is given, performs all of the jobs that were enqueued throughout the duration of the block. If a block is not given, performs all of the enqueued jobs up to this point in the test.
def test_perform_enqueued_jobs perform_enqueued_jobs do MyJob.perform_later(1, 2, 3) end assert_performed_jobs 1 end def test_perform_enqueued_jobs_without_block MyJob.perform_later(1, 2, 3) perform_enqueued_jobs assert_performed_jobs 1 end
This method also supports filtering. If the :only option is specified, then only the listed job(s) will be performed.
def test_perform_enqueued_jobs_with_only perform_enqueued_jobs(only: MyJob) do MyJob.perform_later(1, 2, 3) # will be performed HelloJob.perform_later(1, 2, 3) # will not be performed end assert_performed_jobs 1 end
Also if the :except option is specified, then the job(s) except specific class will be performed.
def test_perform_enqueued_jobs_with_except perform_enqueued_jobs(except: HelloJob) do MyJob.perform_later(1, 2, 3) # will be performed HelloJob.perform_later(1, 2, 3) # will not be performed end assert_performed_jobs 1 end
:only and :except options accept Class, Array of Class, or Proc. When passed a Proc, an instance of the job will be passed as argument.
If the :queue option is specified, then only the job(s) enqueued to a specific queue will be performed.
def test_perform_enqueued_jobs_with_queue perform_enqueued_jobs queue: :some_queue do MyJob.set(queue: :some_queue).perform_later(1, 2, 3) # will be performed HelloJob.set(queue: :other_queue).perform_later(1, 2, 3) # will not be performed end assert_performed_jobs 1 end
If the :at option is specified, then only jobs that have been enqueued to run at or before the given time will be performed. This includes jobs that have been enqueued without a time.
If queue_adapter_for_test is overridden to return a different adapter, perform_enqueued_jobs will merely execute the block.