Я использую rails 6.01
и delayed_job, 4.1.8
. Я установил активный адаптер очереди заданий
#config/environments/test.rb
config.active_job.queue_adapter = :inline
Код rspec:
before(:each) { ActionMailer::Base.deliveries = [] }
it 'sends some message' do
UserMailer.delay.some_message
mail = ActionMailer::Base.deliveries
expect(mail.count).to eq 1
end
Этот тест завершается неудачно со счетчиком 0. При просмотре журнала почтовое сообщение помещается в очередь в DelayedJobно не выполнено:
Delayed::Backend::ActiveRecord::Job Create (0.4ms) INSERT INTO "delayed_jobs" ("handler", "run_at", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["handler", "--- !ruby/object:Delayed::PerformableMailer\nobject: !ruby/class 'UserMailer'\nmethod_name: :some_message"], ["run_at", "2019-12-12 18:29:26.457639"], ["created_at", "2019-12-12 18:29:26.458062"], ["updated_at", "2019-12-12 18:29:26.458062"]]
f Я использую binding.pry
в тесте и проверим Rails.application.config.queue_adapter.queue
значение #<ActiveJob::QueueAdapters::InlineAdapter:0x00007faefad1d408>
, которое кажется правильным, поэтому эта проблема, вероятно, не вызвана этими рельсами6 выпуск .
Если я использую
UserMailer.some_message.deliver
, тест пройден, так что с почтовой программой все в порядке.
Как это исправить?