有什么好方法可以用rspec测试控制器吗?实际上,我正在测试带有机架/测试的完整输出(包括渲染视图)。
以下面的最小控制器为例:
MyApp.controllers :cool_controller do
get :index do
some_var = DateTime.now
render 'some_view', :locals => { :dont_know => nil, :some_var => some_var }
end
end
测试的最佳选择是什么,本地哈希中的值就像我期望的那样?
答案 0 :(得分:2)
对于这种情况,似乎你想测试: a)DateTime.now为您提供有效值 - 直接使用经典rspec进行测试。 b)将var some_var传递给render,但这很简单。
听起来你可能真的想要孤立地测试视图。这样的事情(未经测试):
it 'shows the time now' do
right_now = DateTime.now
engine = Haml::Engine.new(IO.read('some_view.haml'))
rendered = engine.render(Object.new, :@some_var => right_now)
rendered.should have_css('ul#some_var li', :text => right_now)
end