当Content-Transfer-Encoding:quoted-printable时,rspec has_link与动作邮件程序视图不匹配

时间:2014-01-06 18:44:50

标签: ruby-on-rails rspec actionmailer rails-i18n

我在编写为have_link

的本地化电子邮件中使用rspec quoted-printable时遇到问题

使用I18.locale = :en

从rails控制台
UserMailer.signup_confirmation(User.last.decorate).parts[1].encoded

产量

"Content-Type: text/html;\r\n charset=UTF-8\r\nContent-Transfer-Encoding: 7bit\r\n\r\n<p>Hello,</p>\r\n\r\n<p>Thank you for registering!</p>\r\n\r\n<p><a href=\"http://example.com/en/users/119/edit\">Edit profile</a></p>"

I18.locale = :es产生

"Content-Type: text/html;\r\n charset=UTF-8\r\nContent-Transfer-Encoding: quoted-printable\r\n\r\n<p>=C2=A1Hola,</p>\r\n\r\n<p>Thank you for registering!</p>\r\n\r\n<p><a href=3D\"http://example.com/es/users/119/edit\">Editar perfil</a></=\r\np>=\r\n"

注意链接中的差异

:en - <a href=\"http     # Content-Transfer-Encoding: 7bit
:es - <a href=3D\"http   # Content-Transfer-Encoding: quoted-printable

当我使用

rspec中测试这些时
expect(msg).to have_link(translated_name, href: localized_url)

它为:en传递,但:es失败。

如果html电子邮件视图为quoted-printable,我该如何测试链接是否存在?

1 个答案:

答案 0 :(得分:1)

我有一个非常类似的问题rspec和链接。故障并非与rspec有关。这是旧垃圾进入垃圾箱的情况。获取未编码的html部分版本,并将 传递给您的期望:

expect(msg.html_part.decoded).to have_link(translated_name, href: localized_url)