1

render をスタブ化し、特定のレイアウトが選択されていることをテストしたい

ボーナスキャッチ:テスト環境では、そのレイアウトファイルは存在しません

コントローラーがレンダリングせずに ActionView::MissingTemplate エラーをトリガーせずにレイアウトを選択したかどうかを検出する賢い方法はありますか?

(これは Rails 2.3 アプリ上ですが、Rails 3 について気軽にチャットしてください)

4

1 に答える 1

1

これを行う最も簡単な方法は、レイアウト選択ロジックをヘルパーに入れ、ヘルパーを直接テストすることです。何かをスタブしたり、レンダリングを偽造する必要はありません。

class MyController < ActionController::Base
  layout :choose_layout

private
  def choose_layout
    if some_thing?
      'this_layout'
    else
      'other_layout'
    end
  end
end

class MyControllerTest < ActionController::TestCase
  test "choose_layout" do
    @controller.stubs(:some_thing? => true)
    assert_equal 'other_layout', @controller.send(:choose_layout)
  end
end
于 2011-08-31T16:53:37.570 に答える