1

我想存根渲染,我想测试是否选择了某个布局

额外收获:在测试环境中,该布局文件将不存在

有没有一种聪明的方法来检测控制器是否选择了没有渲染的布局,并且没有触发 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 回答