ruby-on-rails ActionMailer::TestHelper的Rake测试等效项?

vq8itlhq  于 2022-11-19  发布在  Ruby
关注(0)|答案(2)|浏览(128)

我们最近已经从使用deliver_now发送电子邮件迁移到了deliver_later。为了使排队的电子邮件在系统重新启动时不会丢失,我们使用Sidekiq实现了这一点。
当我们使用deliver_now时,我们的Rake测试可以测试使用

assert_equal 1, ActionMailer::Base.deliveries.count

对于Rspec,有assert_enqueued_emails方法来测试电子邮件是否排队。是否有Rake测试的等效方法?

eagi6jfj

eagi6jfj1#

你可以使用have_enqueued_mail匹配器(documentation),然后你的规范将使用如下所示的内容。
have_enqueued_mail(MyMailer, :my_particular_email).once

fafcakar

fafcakar2#

一旦我知道该怎么做,解决办法就很简单:
1.将include ActionMailer::TestHelper行添加到测试文件的开头
1.在所有电子邮件排队后执行方法perform_enqueued_jobs
在那之后,所有的旧测试都工作得很好。
请访问https://api.rubyonrails.org/classes/ActiveJob/TestHelper.html#method-i-perform_enqueued_jobs

相关问题