February 2018
Intermediate to advanced
406 pages
9h 52m
English
Rails provides minimal support for testing ActiveJob background jobs and ActiveCable web sockets.
In RSpec a spec of type: :job or one placed in the spec/jobs directory exposes a couple of matchers. Before you run job specs, you need to specify that the jobs queue is using the test setting and not running off to Sidekiq or whatever. You do that with ActiveJob::Base.queue_adapter = :test, which you can use in a before block.
The basic matcher is have_been_enqueued, and the argument to it is the class of the job being enqueued, as in
| | it "should enqueue a mailer job" do |
| | AddsTaskWorkflow.new.run |
| | expect(TaskAddedMailJob).to have_been_enqueued |
| | end |
You can chain a lot of things to have_been_enqueued for more specific ...