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

问题描述 投票:0回答:1

我用邮件激活用户的帐户。

在模板我在俄罗斯加入信息。

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
    "\r\n----==_mimepart_5be06c46e2863_1afb2b1883b445bc35221\r\nContent-Type: text/plain;\r\n charset=UTF-8\r\nContent-Transfer-Encoding: base64\r\n\r\n0J/RgNC40LLQtdGCLCBFZGVtIEV4YW1wbGUhDQoNCtCU0L7QsdGA0L4g0L/Q\r\nvtC20LDQu9C+0LLQsNGC0Ywg0L3QsCBTYW1wbGVBcHAhDQrQktGLINGD0YHQ\r\nv9C10YjQvdC+INC30LDRgNC10LPQuNGB0YLRgNC40YDQvtCy0LDQvdGLLCDQ\r\nvdC+INC00LvRjyDQt9Cw0LLQtdGA0YjQtdC90LjRjyDQsNC60YLQuNCy0LDR\r\nhtC40Lgg0YHQstC+0LXQs9C+INCw0LrQutCw0YPQvdGC0LAg0L3QtdC+0LHR\r\nhdC+0LTQuNC80L4g0L/RgNC+0LnRgtC4INC/0L4g0Y3RgtC+0Lkg0YHRgdGL\r\n0LvQutC1Og0KaHR0cDovL2xvY2FsaG9zdDozMDAwL2FjY291bnRfYWN0aXZh\r\ndGlvbnMvaC1zdktRZnpsNTQ5aUNyaVFCV2c4dy9lZGl0P2VtYWlsPWVkZW0l\r\nNDBleGFtcGxlLmNvbQ0KDQrQldGB0LvQuCDQktGLINC90LUg0YDQtdCz0LjR\r\ngdGC0YDQuNGA0L7QstCw0LvQuNGB0Ywg0L3QsCBTYW1wbGVBcHAsINC/0YDQ\r\nvtGB0YLQviDQv9GA0L7QuNCz0L3QvtGA0LjRgNGD0LnRgtC1INGN0YLQviDQ\r\nv9C40YHRjNC80L4uDQoNCg==\r\n\r\n----==_mimepart_5be06c46e2863_1afb2b1883b445bc35221\r\nContent-Type: text/html;\r\n charset=UTF-8\r\nContent-Transfer-Encoding: base64\r\n\r\nPCFET0NUWVBFIGh0bWw+DQo8aHRtbD4NCiAgPGhlYWQ+DQogICAgPG1ldGEg\r\naHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7\r\nIGNoYXJzZXQ9dXRmLTgiIC8+DQogICAgPHN0eWxlPg0KICAgICAgLyogRW1h\r\naWwgc3R5bGVzIG5lZWQgdG8gYmUgaW5saW5lICovDQogICAgPC9zdHlsZT4N\r\nCiAgPC9oZWFkPg0KDQogIDxib2R5Pg0KICAgIDxoMT5TYW1wbGUgQXBwPC9o\r\nMT4NCg0KPHA+0J/RgNC40LLQtdGCLCBFZGVtIEV4YW1wbGUhPC9wPg0KPHA+\r\nJm5ic3A8L3A+DQo8cD7QlNC+0LHRgNC+INC/0L7QttCw0LvQvtCy0LDRgtGM\r\nINC90LAgU2FtcGxlQXBwITwvcD4NCjxwPtCS0Ysg0YPRgdC/0LXRiNC90L4g\r\n0LfQsNGA0LXQs9C40YHRgtGA0LjRgNC+0LLQsNC90YssINC90L4g0LTQu9GP\r\nINC30LDQstC10YDRiNC10L3QuNGPINCw0LrRgtC40LLQsNGG0LjQuCDRgdCy\r\n0L7QtdCz0L4g0LDQutC60LDRg9C90YLQsCDQvdC10L7QsdGF0L7QtNC40LzQ\r\nviDQv9GA0L7QudGC0LggPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDozMDAw\r\nL2FjY291bnRfYWN0aXZhdGlvbnMvaC1zdktRZnpsNTQ5aUNyaVFCV2c4dy9l\r\nZGl0P2VtYWlsPWVkZW0lNDBleGFtcGxlLmNvbSI+0L/QviDRjdGC0L7QuSDR\r\ngdGB0YvQu9C60LU8L2E+LjwvcD4NCjxwPiZuYnNwPC9wPg0KPHA+0JXRgdC7\r\n0Lgg0JLRiyDQvdC1INGA0LXQs9C40YHRgtGA0LjRgNC+0LLQsNC70LjRgdGM\r\nINC90LAgU2FtcGxlQXBwLCDQv9GA0L7RgdGC0L4g0L/RgNC+0LjQs9C90L7R\r\ngNC40YDRg9C50YLQtSDRjdGC0L4g0L/QuNGB0YzQvNC+LjwvcD4NCg0KICA8\r\nL2JvZHk+DQo8L2h0bWw+DQo=\r\n\r\n----==_mimepart_5be06c46e2863_1afb2b1883b445bc35221--\r\n".
    test/mailers/user_mailer_test.rb:12:in `block in <class:UserMailerTest>'

此问题仅在电子邮件正文西里尔符号。

我怎样才能使用西里尔字母符号的情况下纠正这些试验成功的结果?

ruby-on-rails testing encoding mailer cyrillic
1个回答
0
投票

我用了

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

和试验取得了成功

© www.soinside.com 2019 - 2024. All rights reserved.