测试使用 Sidekiq 排队的邮件

Testing Mails queued with Sidekiq

提问人:Edward Caulfield 提问时间:11/4/2022 更新时间:11/15/2022 访问量:324

问:

由于我们需要能够安排电子邮件发送,因此我们已迁移到使用 Sidekiq 通过该方法发送电子邮件。在旧制度下,我们的测试可以使用deliver_laterdeliver_now

ActionMailer::Base.deliveries[index]

检查收件人、主题、正文、附件等......

出于测试目的,在使用 Sidekiq 和 ?deliver_later

Ruby-on-Rails 电子邮件 测试 rspec sidekiq

评论

1赞 Alter Lagos 11/5/2022
这回答了你的问题吗?如何使用 rspec 测试 ActionMailer deliver_later
0赞 Edward Caulfield 11/14/2022
感谢您的建议,但对我来说,这比简单地将代码块包装在 TestHelper 方法中更复杂。

答:

0赞 tejasbubane 11/10/2022 #1

为了测试电子邮件的内容,您必须呈现需要为其执行作业的电子邮件模板。我建议你应该分开单元测试:

  1. 作业规范,用于检查电子邮件是否使用正确的参数排队。
  2. 电子邮件规范,用于检查电子邮件内容。

如果要采用端到端样式,请使用 to 执行作业,然后像以前一样使用。Sidekiq::Testing.inline!ActionMailer::Base.deliveries[index]

0赞 Edward Caulfield 11/14/2022 #2

解决方案原来是在所有电子邮件排队后执行。在此之后,所有现有的测试机制都起作用了。perform_enqueued_jobs

有关其他信息,请参阅 https://api.rubyonrails.org/v7.0.4/classes/ActiveJob/TestHelper.html