render をスタブ化し、特定のレイアウトが選択されていることをテストしたい
ボーナスキャッチ:テスト環境では、そのレイアウトファイルは存在しません
コントローラーがレンダリングせずに ActionView::MissingTemplate エラーをトリガーせずにレイアウトを選択したかどうかを検出する賢い方法はありますか?
(これは Rails 2.3 アプリ上ですが、Rails 3 について気軽にチャットしてください)
render をスタブ化し、特定のレイアウトが選択されていることをテストしたい
ボーナスキャッチ:テスト環境では、そのレイアウトファイルは存在しません
コントローラーがレンダリングせずに ActionView::MissingTemplate エラーをトリガーせずにレイアウトを選択したかどうかを検出する賢い方法はありますか?
(これは Rails 2.3 アプリ上ですが、Rails 3 について気軽にチャットしてください)
これを行う最も簡単な方法は、レイアウト選択ロジックをヘルパーに入れ、ヘルパーを直接テストすることです。何かをスタブしたり、レンダリングを偽造する必要はありません。
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