RSpec2:view.should呈现_模板最佳实践?

RSpec2:view.should呈现_模板最佳实践?,rspec,rspec2,Rspec,Rspec2,几个月来我一直在寻找最终的答案 RSpec book根本不涉及它: 现在,我们如何处理视图规范中的局部显示 在RSpec2中 我有一个大的35K+线的意见和相关的规格,我正在尝试 升级到Rails3/RSpec2。我的观点相当广泛地使用了partials 这个问题对我来说是一个巨大的障碍 before do view.should render_template("event_list", :locals => {:calendar => @calendar}) end 导致我的

几个月来我一直在寻找最终的答案 RSpec book根本不涉及它:

现在,我们如何处理视图规范中的局部显示 在RSpec2中

我有一个大的35K+线的意见和相关的规格,我正在尝试 升级到Rails3/RSpec2。我的观点相当广泛地使用了partials 这个问题对我来说是一个巨大的障碍

before do
 view.should render_template("event_list", :locals => {:calendar => @calendar})
end
导致我的所有相关规格失败,原因如下:

expecting <"event_list"> but rendering with <"">.
Expected block to return true value.

有什么建议吗?

我想您现在需要传入一个散列,而不是部分的名称:

view.should render_template(:partial=>"_event_list", :locals => {:calendar => @calendar})
编辑

FWIW我也做不到,但monkeypatching通过了:

class ActionView::Base
  def stub_partial(hash)
    view_paths.unshift(ActionView::FixtureResolver.new(hash))
  end
end
然后


也许David会解释正确的方法…

不幸的是,这让Rspec崩溃了:当你没有预料到它时,你有一个nil对象!您可能期望数组的一个实例。计算nil时出错。[]嗯。我早些时候尝试过这个方法,结果成功了。你是在调用视图之前渲染吗?我需要通过一个before块来执行此操作,因为每个规范都会渲染部分。看起来David知道这是一个问题:啊,我误解了你的意图。编辑后的答案有效吗?不幸的是,编辑后的代码也无效。规范继续渲染每个规范中的部分。什么?看起来这并不难:|
before(:each) do
  view.stub_partial("path_to/_partial" => "")
end