加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何使用RSpec测试电子邮件标题

发布时间:2020-12-16 20:18:16 所属栏目:百科 来源:网络整理
导读:我在Rails应用程序中使用SendGrid的 SMTP API发送电子邮件.但是,我使用RSpec测试电子邮件头(“X-SMTPAPI”)遇到麻烦. 邮件看起来像这样(从ActionMailer :: Base.deliveries检索): #Mail::Message:2189335760,Multipart: false,Headers: Date: Tue,20 Dec 20
我在Rails应用程序中使用SendGrid的 SMTP API发送电子邮件.但是,我使用RSpec测试电子邮件头(“X-SMTPAPI”)遇到麻烦.

邮件看起来像这样(从ActionMailer :: Base.deliveries检索):

#<Mail::Message:2189335760,Multipart: false,Headers: 
<Date: Tue,20 Dec 2011 16:14:25 +0800>,<From: "Acme Inc" <contact@acmeinc.com>>,<To: doesntmatter@nowhere.com>,<Message-ID: <4ef043e1b9490_4e4800eb1b095f1@Macbook.local.mail>>,<Subject: Your Acme order>,<Mime-Version: 1.0>,<Content-Type: text/plain>,<Content-Transfer-Encoding: 7bit>,<X-SMTPAPI: {"sub":{"|last_name|":[Foo],"|first_name|":[Bar]},"to":["foo@bar.com"]}>>

这是我的规范代码(失败):

ActionMailer::Base.deliveries.last.to.should include("foo@bar.com")

我也尝试过各种方法来检索标题(“X-SMTPAPI”),并且也不起作用:

mail = ActionMailer::Base.deliveries.last
mail.headers("X-SMTPAPI") #NoMethodError: undefined method `each_pair' for "X-SMTPAPI":String

帮帮我?

更新(回答)

原来,我可以这样做来检索电子邮件标题的值:

mail.header['X-SMTPAPI'].value

但是,返回的值为JSON格式.那么我所需要做的就是解码它:

sendgrid_header = ActiveSupport::JSON.decode(mail.header['X-SMTPAPI'].value)

它返回一个哈希,在那里我可以做到这一点:

sendgrid_header["to"]

检索电子邮件地址数组.

解决方法

email_spec宝石有一堆匹配器,使这更容易,你可以做类似的东西
mail.should have_header('X-SMTPAPI',some_value)
mail.should deliver_to('foo@bar.com')

并且,如果您不想使用它,请将该源的宝贵资料引导到正确的方向.

mail.to.addrs

返回您的电子邮件地址(而不是像“Bob”)

mail.header['foo']

得到你的foo标题的字段(取决于你检查你可能想要调用to_s来获取实际的字段值)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读