12

コントローラーをテストして、特定のレイアウトをレンダリングできます

expect { get :index }.to render_template(layout: 'my_layout')

しかし、コントローラーをテストしてNOレイアウトをレンダリングするにはどうすればよいですか?

次の最初の期待値はパスしますが、注意してください: 2 番目の期待値もパスします! (同じコードをテストする)

expect { get :index }.to render_template(layout: false)
expect { get :index }.to render_template(layout: true)

2008 年 11 月、@david-chelimsky は次のように述べています。

これをうまく処理した 1 つの方法は、この 1 つの例 (独自のグループ内) の integrate_views を使用し、レイアウトの html 要素がフォームに存在しないように指定することです。これは脆い例ですが、それは 1 つのみです。

レンダリングされたビューを確認したくありませんが、これまでのところより良い解決策は見つかりませんでした。

誰かが良いアプローチをしていますか?

4

3 に答える 3

4

レイアウトがない場合の私のテストでは、「アプリケーション」レイアウトがロードされていないかどうかを確認するだけです

expect { get :index }.to_not render_template(layout: "application")
于 2013-05-16T17:20:53.130 に答える