我已经开始设置多部分电子邮件,如Rails指南中所述:http://guides.rubyonrails.org/action_mailer_basics.html#sending-multipart-emails
我有文本和html格式的邮件模板,但看起来我的测试只检查HTML部分 . 有没有办法单独检查文本模板?
是否仅检查HTML视图,因为它是默认顺序中的第一个?
我已经开始设置多部分电子邮件,如Rails指南中所述:http://guides.rubyonrails.org/action_mailer_basics.html#sending-multipart-emails
我有文本和html格式的邮件模板,但看起来我的测试只检查HTML部分 . 有没有办法单独检查文本模板?
是否仅检查HTML视图,因为它是默认顺序中的第一个?
4 回答
为了补充,nilmethod的优秀答案,您可以通过使用共享示例组测试text和html版本来清理您的规范:
spec_helper.rb
your_email_spec.rb
这可以使用正则表达式进行测试 .
在HTML部分中查找内容(在此之后使用#should匹配):
在纯文本部分中查找内容(在此之后使用#should进行匹配):
检查确实是生成多部分消息:
为了使事情变得更简单,您可以使用
找到各自的部分 . 这适用于带附件的结构化多部分/备用消息 . (使用Rails 3.0.14在Ruby 1.9.3上测试过 . )
这些方法使用某种启发式方法来查找相应的消息部分,因此如果您的消息有多个文本部分(例如Apple Mail创建它们),则可能无法执行“正确的操作” .
这会将上述方法改为
它适用于纯文本(非多部分)消息和多部分消息,并针对特定正则表达式测试所有消息体 .
现在,任何志愿者都可以制作一个“真正的”RSpec匹配器吗? :) 就像是
会更好......
如果您的电子邮件包含附件,则文本和html部分将放在
multipart/alternative
部分中 . 这在Sending Emails with Attachments in the Rails 3 Guide下注明 .为了解决这个问题,我首先将上面的
get_message_part
方法简化为:然后在我的测试中: