【问题标题】:ActionMailer.deliveries is always an empty arrayActionMailer.deliveries 始终是一个空数组
【发布时间】:2014-10-04 19:49:08
【问题描述】:

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

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

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

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

【问题讨论】:

  • 在 TEST 环境的配置环境设置中......你有什么动作邮件设置?

标签: ruby-on-rails ruby-on-rails-4 rspec postmark


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2018-02-10
    • 1970-01-01
    • 2015-01-15
    • 1970-01-01
    • 2017-01-07
    • 2021-02-24
    • 1970-01-01
    • 1970-01-01
    • 2012-10-09
    相关资源
    最近更新 更多