Method: ActiveJob::TestHelper#assert_no_enqueued_jobs

Defined in:
activejob/lib/active_job/test_helper.rb

#assert_no_enqueued_jobs(only: nil, except: nil, queue: nil, &block) ⇒ Object

Asserts that no jobs have been enqueued.

def test_jobs
  assert_no_enqueued_jobs
  HelloJob.perform_later('jeremy')
  assert_enqueued_jobs 1
end

If a block is passed, asserts that the block will not cause any job to be enqueued.

def test_jobs_again
  assert_no_enqueued_jobs do
    # No job should be enqueued from this block
  end
end

Asserts that no jobs of a specific kind are enqueued by passing :only option.

def test_no_logging
  assert_no_enqueued_jobs only: LoggingJob do
    HelloJob.perform_later('jeremy')
  end
end

Asserts that no jobs except specific class are enqueued by passing :except option.

def test_no_logging
  assert_no_enqueued_jobs except: HelloJob do
    HelloJob.perform_later('jeremy')
  end
end

:only and :except options accept Class, Array of Class, or Proc. When passed a Proc, a hash containing the job’s class and it’s argument are passed as argument.

Asserts that no jobs are enqueued to a specific queue by passing :queue option

def test_no_logging
  assert_no_enqueued_jobs queue: 'default' do
    LoggingJob.set(queue: :some_queue).perform_later
  end
end

Note: This assertion is simply a shortcut for:

assert_enqueued_jobs 0, &block


186
187
188
189
190
# File 'activejob/lib/active_job/test_helper.rb', line 186

def assert_no_enqueued_jobs(only: nil, except: nil, queue: nil, &block)
  require_active_job_test_adapter!("assert_no_enqueued_jobs")

  assert_enqueued_jobs 0, only: only, except: except, queue: queue, &block
end