我正在使用
rails 6.01
delayed_job, 4.1.8
. 我已设置活动作业队列适配器
#config/environments/test.rb
config.active_job.queue_adapter = :inline
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 I使用
binding.pry
在测试和检查中
Rails.application.config.queue_adapter.queue
#<ActiveJob::QueueAdapters::InlineAdapter:0x00007faefad1d408>
这似乎是正确的,所以这个问题可能不是由这个引起的
rails 6 issue
如果我使用
UserMailer.some_message.deliver
我该怎么解决这个问题?