我们最近已经从使用deliver_now
发送电子邮件迁移到了deliver_later
。为了使排队的电子邮件在系统重新启动时不会丢失,我们使用Sidekiq实现了这一点。
当我们使用deliver_now
时,我们的Rake测试可以测试使用
assert_equal 1, ActionMailer::Base.deliveries.count
对于Rspec,有assert_enqueued_emails
方法来测试电子邮件是否排队。是否有Rake测试的等效方法?
我们最近已经从使用deliver_now
发送电子邮件迁移到了deliver_later
。为了使排队的电子邮件在系统重新启动时不会丢失,我们使用Sidekiq实现了这一点。
当我们使用deliver_now
时,我们的Rake测试可以测试使用
assert_equal 1, ActionMailer::Base.deliveries.count
对于Rspec,有assert_enqueued_emails
方法来测试电子邮件是否排队。是否有Rake测试的等效方法?
2条答案
按热度按时间eagi6jfj1#
你可以使用
have_enqueued_mail
匹配器(documentation),然后你的规范将使用如下所示的内容。have_enqueued_mail(MyMailer, :my_particular_email).once
fafcakar2#
一旦我知道该怎么做,解决办法就很简单:
1.将
include ActionMailer::TestHelper
行添加到测试文件的开头1.在所有电子邮件排队后执行方法
perform_enqueued_jobs
。在那之后,所有的旧测试都工作得很好。
请访问https://api.rubyonrails.org/classes/ActiveJob/TestHelper.html#method-i-perform_enqueued_jobs