Jared Beck
Jared Beck

Reputation: 17538

Assert zero jobs enqueued using RSpec?

The rspec-rails gem has some support for testing ActiveJob.

Does it provide a way to assert that zero jobs were enqueued?

Rails provides a method called assert_no_enqueued_jobs but it's a little awkward to use in RSpec, because you have to include ::ActiveJob::TestHelper.

RSpec.describe BananaController, type: :controller do
  include ::ActiveJob::TestHelper
  describe "#create" do
    context "access denied" do
      it "does not enqueue any jobs" do
        # ...
        assert_no_enqueued_jobs
      end
    end
  end
end

Is there a better way?

Upvotes: 2

Views: 1962

Answers (1)

Thanh
Thanh

Reputation: 8624

You can try:

expect(ActiveJob::Base.queue_adapter.enqueued_jobs.size).to eq(0)

Upvotes: 1

Related Questions