【问题标题】:rails & rspec; how to test smtpapi batch substitutions导轨 & rspec;如何测试 smtpapi 批量替换
【发布时间】:2023-03-21 23:02:01
【问题描述】:

我的应用程序使用 smtpapi 替换来发送一封电子邮件,其中包含 smtpapi 标头,其中包含 N 个人的姓名和电子邮件地址。 Sendgrid 然后执行“邮件合并”并发送 N 封电子邮件。

我的 Rspec 规范能够测试外发电子邮件是否包含 N 个人的正确 smtpapi 标头,这在理论上意味着将发送 N 封电子邮件。

Rspec 中是否有任何方法可以将测试带入下一步:实际执行模拟发送 WITH smtpapi 替换,以便我的规范可以验证 N 封电子邮件已“发送”,并且每封电子邮件都包含正确的信息。举个简单的例子,检查 N 封“已发送”电子邮件并确保用户名和电子邮件在 N 封电子邮件中的每封电子邮件中都正确邮件合并?

【问题讨论】:

    标签: ruby-on-rails rspec smtp


    【解决方案1】:

    在我看来,这并不是一个真正的 RSpec 问题,因为您实际上并不是在谈论测试 Ruby。正如您所指出的,邮件合并和实际邮件发送发生在 sendgrid 中,这些进程没有 sendgrid 挂钩,更不用说它们的 Ruby 接口了。我唯一能想到的就是测试收件人的实际收据

    【讨论】:

    • 您所说的也适用于测试 SMS 消息传递,但是有一个非常宝贵的 gem,称为 sms-spec,它允许对 SMS 消息进行 Rspec 测试。也许有人巧妙地为电子邮件做了同样的事情。
    • 如果 OP 只是在谈论测试与 Ruby/Rails 邮件接口的交互,那么我会同意你的看法。特别有github.com/bmabey/email-spec。但是,在这种情况下,OP 显然是 sendgrid 的功能。他们可以测试他们的接口 sendgrid,但要测试 sendgrid 是否正确解释指令并尝试将邮件传递给所有正确的收件人,您必须从 sendgrid 获得帮助。
    • Sendgrid 是偶然的。我希望在进行 smtpapi 替换后测试出站电子邮件的外观。我并不是要测试 Sendgrid 本身(恰好是提供该功能的供应商之一)。不难想象一个测试 gem(或 smtpapi 替换 gem)可能存在,给定一个 ActionMailer 电子邮件对象,然后可能会创建一些 N 电子邮件数组,这些电子邮件反映了应用了 smtpapi 替换的原始电子邮件。
    • 除非我真的错过了什么,否则 SMTPAPI 是 sendgrid 的独特 API,并且发生的替换是 sendgrid-unique 并且发生在云中的 sendgrid 本身内。如果您只是在谈论使用 ActionMailer,那么您已经获得了我在之前的消息中引用的 gem,但这并没有执行我所知道的任何花哨的邮件合并。如果您对基于客户端的邮件合并功能持开放态度,那么您可以只存根邮件合并的 SMTP 调用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多