RSpec轨道邮件测试与重音字符

时间:2014-12-05 10:24:19

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

我试图对Rails Mailer进行测试,当我尝试匹配的字符串有一些特殊的字符或重音时,它总会断开。

我的测试:

RSpec.describe UsersMailer, :type => :mailer do

  let(:mail) { UsersMailer.create(@user) }

  it 'includes first_name' do
    expect(mail.body.encoded).to match("#{HTMLEntities.new.encode('Félix', :named)}")
  end

end

我的电子邮件视图:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>
  <%= "#{HTMLEntities.new.encode(@user.first_name, :named)}" %>
</body>
</html>

他们之间的差异:

测试:F&eacute;lix

查看:F&amp;eacute;lix

当我没有HTMLEntities时,我的差异是:

测试:Félix

查看:F=C3=A9lix

我使用Rails 4.2.rc1,不知道这是否有所不同。

1 个答案:

答案 0 :(得分:0)

解决了!刚刚在我的电子邮件视图中添加了一个html_safe:

<%= "#{HTMLEntities.new.encode(@user.first_name, :named).html_safe}" %>

忘记了。