ActionController :: TestCaseを無効にして実際にビューをレンダリングする適切な方法は何ですか?または、テストでレイアウトなしでビューをレンダリングする方法は何でしょうか?
rrを使用して、stub(@controller).render{""}を試しました。
しかし、これはassert_templateアサーションを壊しました。
ありがとう!
ActionController :: TestCaseを無効にして実際にビューをレンダリングする適切な方法は何ですか?または、テストでレイアウトなしでビューをレンダリングする方法は何でしょうか?
rrを使用して、stub(@controller).render{""}を試しました。
しかし、これはassert_templateアサーションを壊しました。
ありがとう!
メインビューをレンダリングしながら、レイアウトだけを無効にするという同じ問題がありました。rspecモックを使用すると、これは私にとってうまくいきます。
@controller.stub(:layout).and_return(false)
rrを使用したことはありませんが、構文は次のようになると思います。
stub(@controller).layout { false }
Rails6でこれをやりたかったのです。モカの宝石を使って:
ActionController::Metal.any_instance.stubs(:process).returns
Railsの他のバージョンの場合、答えを決定する最も簡単な方法はputs caller
、アクションに追加してバックトレースをスキャンすることです。スタブしやすいものを見つけて試してみてください。
デフォルトでは無効になっています。
有効にする場合は、次のことができます。
1)spec_helperでこれを呼び出します。
config.render_views
2)このステートメントをコントローラーテストクラス内に配置します。
render_views
無効にする場合は、次のようなfalseパラメータを追加するだけです。
render_views false
参照:https ://www.relishapp.com/rspec/rspec-rails/v/2-5/docs/controller-specs/render-views