为什么 Rails/RSpec 无法在测试中呈现 &?
Why is Rails/RSpec not able to render & in test?
我有邮件。以及该邮件的视图。在预览时,一切
看起来不错,links 渲染正确。
问题是编写规范 (RSpec)。当我尝试测试某些 link 是否存在时,测试失败,因为 link 中的“&”符号在测试中未正确显示:
我测试的内容(以及在邮件预览中显示的内容):
https://nolp.dhl.de/nextt-online-public/set_identcodes.do?lang=de&idc=1234567890
测试失败时我在测试输出中看到的内容:
https://nolp.dhl.de/nextt-online-public/set_identcodes.do?lang=de&idc=1234567890
那么,我该如何理解呢?
为什么邮件在预览版和测试版中的解释不同?
我应该如何测试它?
测试输出被转义html。您也可以将您的期望转换为转义 html:
expected_link = 'https://nolp.dhl.de/nextt-online-public/set_identcodes.do?lang=de&idc=1234567890'
expect(page).to have_content(ERB::Util.html_escape(expected_link))
尝试使用 CGI.escapeHTML()
。
我 运行 遇到了同样的问题,&
变成了 &
。
您可以尝试使用 CGI.escapeHTML()
来尝试转义 HTML 并将字符(例如 & 符号 &
转换为它们的 HTML 代码 &
。
it { is_expected.to include CGI.escapeHTML( expected_link ) }
我有邮件。以及该邮件的视图。在预览时,一切 看起来不错,links 渲染正确。
问题是编写规范 (RSpec)。当我尝试测试某些 link 是否存在时,测试失败,因为 link 中的“&”符号在测试中未正确显示:
我测试的内容(以及在邮件预览中显示的内容):
https://nolp.dhl.de/nextt-online-public/set_identcodes.do?lang=de&idc=1234567890
测试失败时我在测试输出中看到的内容:
https://nolp.dhl.de/nextt-online-public/set_identcodes.do?lang=de&idc=1234567890
那么,我该如何理解呢? 为什么邮件在预览版和测试版中的解释不同? 我应该如何测试它?
测试输出被转义html。您也可以将您的期望转换为转义 html:
expected_link = 'https://nolp.dhl.de/nextt-online-public/set_identcodes.do?lang=de&idc=1234567890'
expect(page).to have_content(ERB::Util.html_escape(expected_link))
尝试使用 CGI.escapeHTML()
。
我 运行 遇到了同样的问题,&
变成了 &
。
您可以尝试使用 CGI.escapeHTML()
来尝试转义 HTML 并将字符(例如 & 符号 &
转换为它们的 HTML 代码 &
。
it { is_expected.to include CGI.escapeHTML( expected_link ) }