我不知道如何驗證傳遞給渲染模板控制器如何驗證呈現模板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