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
.
コントローラー テスト レンダリング エンジンのバグですか? それを避ける方法を知っていますか?