使用rspec测试来自'标题的邮件程序

nkm*_*nkm 7 testing ruby-on-rails actionmailer rspec-rails

我正在开发一个ruby on rails项目,我正在尝试测试'from'头字段,但测试用例失败了.

这是我在邮件程序中设置的内容

def some_actoin
  mail(to: xyz@example.com,
         from: '"Example" <service@example.com>',
         subject: "test subject")
  end
end
Run Code Online (Sandbox Code Playgroud)

在rspec测试案例中,

mail.from.should == '"Example" <service@example.com>'
Run Code Online (Sandbox Code Playgroud)

我的测试用例失败,出现以下错误

expected: '"Example" <service@example.com>'
got: [service@example.com] (using ==)
Run Code Online (Sandbox Code Playgroud)

用from-header电子邮件地址测试from-header标题是错误的方法吗?

感谢任何帮助!

Sam*_*Sam 10

mail.from只包含电子邮件地址.您也想测试显示名称.

mail.from.should eq(['service@example.com'])
mail[:from].display_names.should eq(['Example'])
Run Code Online (Sandbox Code Playgroud)

  • 似乎 `display_names` 将返回 UTF-8 的编码(?)值,所以我无法用于测试。相反,您可以使用`mail[:from].value`。(至少对于Rails 5) (3认同)