RSpec2: view.should render_template лучшие практики? - PullRequest
0 голосов
/ 16 ноября 2010

Я искал окончательный ответ уже несколько месяцев, и книга 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.

Любой совет?

1 Ответ

0 голосов
/ 16 ноября 2010

Я думаю, что теперь вам нужно передать хеш вместо имени частичного:

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

EDIT

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

Может быть, Давид объяснит, как это сделать ...

...