基本上,测试配置确切地设置它在Rails 4中的工作方式(交付方法设置为测试等),除了我已经替换的弃用选项之外,mail仅发送deliver_now,而不是deliver_later。 Deliver_later在开发环境中工作,即使两个环境之间的配置相同。
测试环境邮件程序配置:
self.navigationController?.navigationBar.barStyle = UIBarStyle.black
self.navigationController?.isNavigationBarHidden = true
答案 0 :(得分:1)
我遇到了同样的问题,而我却试图在
上使用断言enqueued_jobs.size
断言我的邮件已经排队了。另外,我在邮件类上进行了单元测试,我使用的是deliver_now。
这需要包括ActiveJob:TestHelper
class ActiveSupport::TestCase
include ActiveJob::TestHelper
end
答案 1 :(得分:1)
测试使用deliver_later(活动作业)的电子邮件的另一个选项是将您想要执行的代码(未排队)和断言放在perform_enqueued_jobs块中。这还需要在类定义
下方的测试文件顶部添加一个includeinclude ActiveJob::TestHelper
然后如下所示。
perform_enqueued_jobs do
post article_url, params: { article: { title: "Learn Testing", body: "Lorem Ipsum" } }
assert_not_equal 0, ActionMailer::Base.deliveries.size
end