0

我正在使用 Postmark gem for rails 并编写 Rspecs 测试以确保在表单有效时实际发送电子邮件。

我想检查 ActionMailer::Base.deliveries.last.to 是否与我在我想测试的联系表中输入的内容相匹配。

但是,ActionMailer::Base.deliveries 始终是一个空数组。即使在生产中,在成功发送电子邮件(并在另一端接收)后,使用rails c production.

我错过了什么?如何验证电子邮件是否已在我的测试中发送?

4

1 回答 1

1

ActionMailer::Base.deliveriesarray 是:testActionMailer ( docs ) 提供的传递模式的一个特性。如果您在测试环境中启用了 Postmark gem,则该数组将始终为空。

除非您的目标是完全集成测试,否则您应该避免在测试中使用外部服务并坚持:test交付方法。如果你这样做了,你可能还想看看email-spec gem,它提供了一个用于测试使用 ActionMailer 发送的电子邮件的 DSL。

如果您真的想在测试中发送电子邮件,您可以使用Postmark Messages Retrieval API通过收件人或消息 ID 检索已发送的消息并验证其内容。如果这是您正在寻找的,这允许进行完整的黑盒测试。

于 2014-08-12T15:20:55.710 回答