我不知道如何验证传递给渲染模板控制器如何验证呈现模板rspec的
控制器当地人当地人:
def lelf_panel
# ...
if some_condition
locals_hash = some_very_long_hash_A
else
locals_hash = some_very_long_hash_B
end
render :partial => "left_panel", :layout => false, :locals => locals_hash
end
电流规格:
it 'should render correct template for lelf_panel' do
# ...
get 'left_panel'
response.should render_template('system/_left_panel')
end
现在我需要完成此控制器的Rcov,因此我需要添加/修改规范以涵盖'some_condition'结果。我想验证传递给渲染的'lelf_panel'局部变量,就好像我只验证render_template一样,为两个结果渲染的局部页面都是相同的。
我检查 在rspec的文档的“render_template” http://rubydoc.info/gems/rspec-rails/2.8.1/RSpec/Rails/Matchers/RenderTemplate:render_template
只提供信息和消息第2 PARAMS,所以我怎么能测试通过渲染当地人?
这为我工作 - 但只有在我将should_receive注释后的get命令后,我还需要添加controller.stub(:render)以避免错误 - 但我不知道为什么。 – Phantomwhale 2013-02-05 01:56:05
这是高级答案。更改应用程序以适应测试库的需求是一种代码味道。 – user94154 2014-06-24 15:50:22
@Phantomwhale我只是碰到了你遇到的同样的错误。问题是我们的期望不会呈现或重定向任何东西,所以在动作结束时调用默认渲染。这对于rspec来说很好,但现在还没有得到满足。 – 2014-12-05 19:00:32