如何在不测试视图的情况下测试sinatra(padrino)控制器?

时间:2011-03-29 10:11:47

标签: ruby rspec sinatra padrino

有什么好方法可以用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

测试的最佳选择是什么,本地哈希中的值就像我期望的那样?

1 个答案:

答案 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