0

几个月来我一直在寻找明确的答案,而 RSpec 书根本没有涉及它:

我们现在如何处理 RSpec2 中视图规范中的局部渲染?

我有大量(35K+ 行视图和相关规范),我正在尝试升级到 Rails3/RSpec2。我的观点非常广泛地使用了局部,这个问题对我来说是一个巨大的障碍。

before do
 view.should render_template("event_list", :locals => {:calendar => @calendar})
end

导致我所有相关规格失败:

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

有什么建议吗?

4

1 回答 1

0

我认为您现在需要传入哈希而不是部分的名称:

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

编辑

FWIW 我也无法完成这项工作,但猴子补丁让它通过了:

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

然后

before(:each) do
  view.stub_partial("path_to/_partial" => "")
end

也许大卫会解释正确的方法......

于 2010-11-16T19:30:57.140 回答