当电子邮件正文具有西里尔符号时,测试失败



我使用mailer来激活用户的帐户。

在模板中,我添加了俄语信息。

account_activation.text.erb

Привет, <%= @user.name %>!
Для завершения активации своего аккаунта необходимо пройти по этой ссылке:
<%= edit_account_activation_url(@user.activation_token, email: @user.email) %>

account_activation.html.erb

<p>Привет, <%= @user.name %>!</p>
<p>Вы успешно зарегистрированы, но для завершения активации своего аккаунта необходимо пройти <%= link_to "по этой ссылке", edit_account_activation_url(@user.activation_token, email: @user.email) %>.</p>

在开发环境中(在浏览器中(预览电子邮件看起来很完美,没有任何错误。

我为他们写了测试。

class UserMailerTest < ActionMailer::TestCase
test "account_activation" do
user = users(:test)
user.activation_token = User.new_token
mail = UserMailer.account_activation(user)
assert_match user.name, mail.body.encoded
assert_match user.activation_token, mail.body.encoded
assert_match CGI.escape(user.email), mail.body.encoded
end
end

这些测试失败。

FAIL["test_account_activation", Minitest::Result, 2018-11-05 15:04:41 +0300]
test_account_activation#Minitest::Result (1541419481.77s)
Expected /Edem Example/ to match # encoding: US-ASCII
"rn----==_mimepart_5be06c46e2863_1afb2b1883b445bc35221rnContent-Type: text/plain;rn charset=UTF-8rnContent-Transfer-Encoding: base64rnrn0J/RgNC40LLQtdGCLCBFZGVtIEV4YW1wbGUhDQoNCtCU0L7QsdGA0L4g0L/QrnvtC20LDQu9C+0LLQsNGC0Ywg0L3QsCBTYW1wbGVBcHAhDQrQktGLINGD0YHQrnv9C10YjQvdC+INC30LDRgNC10LPQuNGB0YLRgNC40YDQvtCy0LDQvdGLLCDQrnvdC+INC00LvRjyDQt9Cw0LLQtdGA0YjQtdC90LjRjyDQsNC60YLQuNCy0LDRrnhtC40Lgg0YHQstC+0LXQs9C+INCw0LrQutCw0YPQvdGC0LAg0L3QtdC+0LHRrnhdC+0LTQuNC80L4g0L/RgNC+0LnRgtC4INC/0L4g0Y3RgtC+0Lkg0YHRgdGLrn0LvQutC1Og0KaHR0cDovL2xvY2FsaG9zdDozMDAwL2FjY291bnRfYWN0aXZhrndGlvbnMvaC1zdktRZnpsNTQ5aUNyaVFCV2c4dy9lZGl0P2VtYWlsPWVkZW0lrnNDBleGFtcGxlLmNvbQ0KDQrQldGB0LvQuCDQktGLINC90LUg0YDQtdCz0LjRrngdGC0YDQuNGA0L7QstCw0LvQuNGB0Ywg0L3QsCBTYW1wbGVBcHAsINC/0YDQrnvtGB0YLQviDQv9GA0L7QuNCz0L3QvtGA0LjRgNGD0LnRgtC1INGN0YLQviDQrnv9C40YHRjNC80L4uDQoNCg==rnrn----==_mimepart_5be06c46e2863_1afb2b1883b445bc35221rnContent-Type: text/html;rn charset=UTF-8rnContent-Transfer-Encoding: base64rnrnPCFET0NUWVBFIGh0bWw+DQo8aHRtbD4NCiAgPGhlYWQ+DQogICAgPG1ldGEgrnaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7rnIGNoYXJzZXQ9dXRmLTgiIC8+DQogICAgPHN0eWxlPg0KICAgICAgLyogRW1hrnaWwgc3R5bGVzIG5lZWQgdG8gYmUgaW5saW5lICovDQogICAgPC9zdHlsZT4NrnCiAgPC9oZWFkPg0KDQogIDxib2R5Pg0KICAgIDxoMT5TYW1wbGUgQXBwPC9ornMT4NCg0KPHA+0J/RgNC40LLQtdGCLCBFZGVtIEV4YW1wbGUhPC9wPg0KPHA+rnJm5ic3A8L3A+DQo8cD7QlNC+0LHRgNC+INC/0L7QttCw0LvQvtCy0LDRgtGMrnINC90LAgU2FtcGxlQXBwITwvcD4NCjxwPtCS0Ysg0YPRgdC/0LXRiNC90L4grn0LfQsNGA0LXQs9C40YHRgtGA0LjRgNC+0LLQsNC90YssINC90L4g0LTQu9GPrnINC30LDQstC10YDRiNC10L3QuNGPINCw0LrRgtC40LLQsNGG0LjQuCDRgdCyrn0L7QtdCz0L4g0LDQutC60LDRg9C90YLQsCDQvdC10L7QsdGF0L7QtNC40LzQrnviDQv9GA0L7QudGC0LggPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDozMDAwrnL2FjY291bnRfYWN0aXZhdGlvbnMvaC1zdktRZnpsNTQ5aUNyaVFCV2c4dy9lrnZGl0P2VtYWlsPWVkZW0lNDBleGFtcGxlLmNvbSI+0L/QviDRjdGC0L7QuSDRrngdGB0YvQu9C60LU8L2E+LjwvcD4NCjxwPiZuYnNwPC9wPg0KPHA+0JXRgdC7rn0Lgg0JLRiyDQvdC1INGA0LXQs9C40YHRgtGA0LjRgNC+0LLQsNC70LjRgdGMrnINC90LAgU2FtcGxlQXBwLCDQv9GA0L7RgdGC0L4g0L/RgNC+0LjQs9C90L7RrngNC40YDRg9C50YLQtSDRjdGC0L4g0L/QuNGB0YzQvNC+LjwvcD4NCg0KICA8rnL2JvZHk+DQo8L2h0bWw+DQo=rnrn----==_mimepart_5be06c46e2863_1afb2b1883b445bc35221--rn".
test/mailers/user_mailer_test.rb:12:in `block in <class:UserMailerTest>'

此问题仅适用于电子邮件正文中的西里尔符号。

在使用循环符号的情况下,我如何更正这些测试以获得成功的结果?

我使用

assert_match user.name, mail.text_part.decoded
assert_match user.activation_token, mail.text_part.decoded
assert_match CGI.escape(user.email), mail.text_part.decoded

测试成功

最新更新