Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 铁路及;rspec;如何测试smtpapi批量替换_Ruby On Rails_Rspec_Smtp - Fatal编程技术网

Ruby on rails 铁路及;rspec;如何测试smtpapi批量替换

Ruby on rails 铁路及;rspec;如何测试smtpapi批量替换,ruby-on-rails,rspec,smtp,Ruby On Rails,Rspec,Smtp,我的应用程序使用smtpapi替换发送一封包含smtpapi标题的电子邮件,其中包含N个人的姓名和电子邮件地址。然后Sendgrid进行“邮件合并”,并发送N封电子邮件 我的Rspec规范能够测试一封发出的电子邮件是否包含N个人的正确smtpapi头,这在理论上意味着将发送N封电子邮件 Rspec是否有办法将测试进行到下一步:实际使用smtpapi替换执行模拟发送,以便我的规范能够验证N封电子邮件是否“已发送”,并且每封电子邮件都包含正确的信息。举一个简单的例子,检查N封“已发送”的电子邮件,确

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

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


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

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

您所说的在测试SMS消息时也适用,但是有一个非常宝贵的gem,叫做SMS spec,它允许对SMS消息进行Rspec测试。也许有人对电子邮件也这么做了。如果OP只是在谈论测试与Ruby/Rails邮件接口的交互,那么我同意你的看法。特别是有。然而,在这种情况下,OP显然是sendgrid的功能。他们可以测试与sendgrid的接口,但要测试sendgrid是否正确解释了说明并尝试将邮件发送给所有正确的收件人,您必须从sendgrid获得帮助。sendgrid是偶然的。我希望能测试出站电子邮件经过smtpapi替换后的样子。我不想测试Sendgrid本身(恰好是提供这种功能的供应商之一)。不难想象一个测试gem(或smtpapi替代gem)可能存在,给定ActionMailer电子邮件对象,可能会创建一些N封电子邮件的数组,这些电子邮件反映了应用了smtpapi替代的原始电子邮件。除非我真的遗漏了什么,SMTPAPI是sendgrid唯一的API,发生的替换是sendgrid唯一的,并且发生在云中的sendgrid内部。如果您只是在谈论使用ActionMailer,那么您已经得到了我在前面的消息中引用的gem,但这并没有实现我所知道的任何奇特的邮件合并。如果您对基于客户端的邮件合并功能开放,那么您可以只存根邮件合并的SMTP调用。