我正在使用Postmark gem进行rails并编写Rspecs测试,以确保在表单有效时实际发送电子邮件。
我想检查一下ActionMailer :: Base.deliveries.last.to与我在联系表单中输入的内容相匹配,我想测试一下。
但是,ActionMailer :: Base.deliveries始终是一个空数组。即使在生产中,在成功发送电子邮件(并在另一端收到)后,当使用rails c production
观察时,该数组仍然为空。
我错过了什么?如何验证我的测试中是否已发送电子邮件?
答案 0 :(得分:1)
ActionMailer::Base.deliveries
数组是ActionMailer(docs)提供的:test
投放模式的一项功能。如果您在测试环境中启用了Postmark gem,则该数组将始终为空。
除非您的目标是进行完整的集成测试,否则应避免在测试中使用外部服务,并坚持使用:test
传递方法。如果你这样做,你可能还想看看email-spec gem,它提供了一个DSL来测试用ActionMailer发送的电子邮件。
如果您确实想要在测试中发送电子邮件,可以使用Postmark Messages Retrieval API通过收件人或邮件ID检索已发送邮件并验证其内容。如果您正在寻找的话,这可以进行完整的黑盒测试。