因为我们需要有计划电子邮件发送的能力,所以我们已经迁移到使用Sidekiq通过deliver_later方法发送电子邮件。
deliver_later
ActionMailer::Base.deliveries[index]
检查收件人、主题、正文、附件等。出于测试目的,在使用Sidekiq和deliver_later时,是否有等效的机制来检查排队电子邮件的内容?
cqoc49vn1#
为了测试邮件的内容,你必须渲染需要执行作业的邮件模板。我建议你应该分开单元测试:1.用于检查电子邮件是否使用正确的参数入队的作业规范。1.电子邮件规范,用于检查电子邮件内容。如果您想使用端到端的样式,请使用Sidekiq::Testing.inline!执行作业,然后像以前一样使用ActionMailer::Base.deliveries[index]。
Sidekiq::Testing.inline!
bis0qfac2#
解决方案是在所有电子邮件排队后执行perform_enqueued_jobs,这样,所有现有的测试机制都能正常工作。如需其他信息,请参阅https://api.rubyonrails.org/v7.0.4/classes/ActiveJob/TestHelper.html。
perform_enqueued_jobs
2条答案
按热度按时间cqoc49vn1#
为了测试邮件的内容,你必须渲染需要执行作业的邮件模板。我建议你应该分开单元测试:
1.用于检查电子邮件是否使用正确的参数入队的作业规范。
1.电子邮件规范,用于检查电子邮件内容。
如果您想使用端到端的样式,请使用
Sidekiq::Testing.inline!
执行作业,然后像以前一样使用ActionMailer::Base.deliveries[index]
。bis0qfac2#
解决方案是在所有电子邮件排队后执行
perform_enqueued_jobs
,这样,所有现有的测试机制都能正常工作。如需其他信息,请参阅https://api.rubyonrails.org/v7.0.4/classes/ActiveJob/TestHelper.html。