Я пытаюсь начать разработку компонентов представления с Rspec2 и Rails3.
Однако я делаю следующее наблюдение и не понимаю, что происходит и как это исправить.
В моей спецификации я определяю:
describe "main/index.html.erb" do
it "displays a photo url in products partial" do
assign(:designs, [stub_model(Design, :name => "test", :photo => "photo_url")])
render
rendered.should contain("photo_url")
end
end
Когда я бегу:
rspec spec/view/main_spec.rb
Я получаю эту ошибку:
1) main/index.html.erb displays a photo url in products partial
Failure/Error: render
ActionView::Template::Error:
undefined method `photo' for nil:NilClass
# ./app/views/main/_design.html.erb:3:in `_app_views_main__design_html_erb__2937334847274155273_2170841960__1566661024965846011'
# ./app/views/main/index.html.erb:25:in `_app_views_main_index_html_erb__837234277009287876_2170861440__898201527838028543'
# ./spec/views/main_spec.rb:7:in `block (2 levels) in '
Однако, если я только «получаю доступ» к локальному фотообъекту в моей части, все проходит. Это:
в _design.html.erb:
---> PASS
---> FAIL
На мой взгляд, я называю свое частичное следующим:
main.html.erb
{ :designs => @designs } %>
Что думает сообщество?
Спасибо за вашу помощь!