【发布时间】:2012-09-16 15:14:34
【问题描述】:
在 Rails 3.2.8 控制器测试中,我想使用 assert_select 来控制使用 raw 或 #html_safe 方法在我的视图中呈现的未转义字段的内容:
<div id="summary">
<%= raw @doc.summary %>
</div>
但在我的测试中,这两个断言都失败了:
# Fixture loading in doc variable, get :show, assert_response ...
assert_select('#summary', doc.summary)
assert_select('#summary', doc.summary.html_safe)
如果我的摘要类似于<p>Stuff:</p><ul><li>Stuff1</li><li>Stuff1</li></ul>,那么测试告诉我,对于这两行,:
<"<p>Stuff:</p><ul><li>Stuff1</li><li>Stuff2</li></ul>">
expected but was
<"Stuff:\n \n Stuff1\n Stuff2">
在测试模式下,它似乎使用\n 而不是 HTML 标记来呈现视图,就像为 CLI 显示转义一样。
但是当我启动服务器并在浏览器中显示我的页面时,这部分是用 HTML 标记呈现的,没有\n。
这是控制器测试渲染引擎中的错误吗?你知道如何避免吗?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 escaping functional-testing actioncontroller