我尝试使用cucumber并使用ActionMailer guide和Testing guide使用以下简单案例在简单的Rails 5应用中测试电子邮件发送。你能帮我看看它为什么不起作用吗?
应用程序/邮寄者/ test_mailer.rb
class TestMailer < ApplicationMailer
def welcome_email
@greeting = "Hi"
mail to: "to@example.org", subject: 'welcome!'
end
end
特征/ test.feature
Feature: test email
Background:
Given we say "hello"
Scenario: send mail
Given 0 email is in the queue
Then send an email
Given 1 email is in the queue
特征/步骤/ test_steps.rb
Given "we say {string}" do |say_it|
puts say_it
end
Given "{int} email is in the queue" do |mail_count|
puts "method : #{ActionMailer::Base.delivery_method}"
puts "deliveries: #{ActionMailer::Base.perform_deliveries}"
ActionMailer::Base.deliveries.count.should eq mail_count
end
Then "send an email" do
TestMailer.welcome_email.deliver_later
end
它不断响应队列中没有任何项目。
答案 0 :(得分:1)
不要发送_later,立即发送。如果您使用deliver_later,则必须先运行后台作业,然后才能将邮件添加到队列中
答案 1 :(得分:0)
在我对@diabolist的回复中,我不得不修改我的黄瓜测试设置以支持#f07c00
而不是:async
。这需要:
配置/环境/ test.rb
:inline
特征性/支撑性/ env.rb
...
config.active_job.queue.adapter = :test
...
我意识到我可能刚刚将我的测试适配器切换到...
World( ActiveJob::TestHelper )
Around() do |scenario, block|
perform_enqueued_jobs do
block.call
end
end
,但这会让我稍后进行一些队列测试 - 特别是使用:inline
方法。