У меня есть несколько примеров RSpec, которые я написал для тестирования различных аспектов визуализированного HTML, генерируемого контроллером.К ним относятся такие вещи, как ...
it "should be successful" do
get :show, :section => @section.slug
response.should be_success
end
it "should have the right title" do
get :show, :section => @section.slug
response.should have_selector("title", :content => @section.name)
end
it "should find the right section" do
get :show, :section => @section.slug
assigns(:section).should == @section
end
Это тестирование SectionsController#show
.Когда я перехожу на страницу в моем браузере, она отображается без каких-либо исключений.Тем не менее, RSpec возвращает (для всех трех, имейте в виду):
Failure/Error: get :show, :section => @section.slug
ActionView::Template::Error
Это явно не на линии get :show, :section => @section.slug
для всех тестов.
Я сузил проблемув один частичный.В файле представления для этого действия я включил партиал с
<%= render 'popular' %>
... и когда эта строка удалена, все тесты проходят.Соответствующее содержание для этой части:
<div class="most_popular group">
<%= render post_excerpt(@popular.shift, :class => "one") %>
</div><!-- end most popular -->
Этот post_excerpt является вспомогательным методом, который я написал, чтобы возвратить некоторые параметры в виде хэша для передачи render
.
def post_excerpt(post, options)
{ :partial => 'posts/post_excerpt', :object => post, :as => :post, :locals => { :klass => options[:class] } }
end
.частичное 'posts / post_excerpt':
<article class="<%= klass if klass %>">
<h2><%= link_to post.name, section_post_path(post.section, post) %></h2>
<footer>By <%= link_to post.author.name, post.author %></footer>
<hr />
<div class="content">
<%= raw(post.excerpt) %>
</div><!-- end content -->
</article>
Я использую RSpec 2.4.0 и Rails 3.0.3.Я могу предоставить более подробную информацию или фрагменты кода, если это необходимо, но я думаю, что этого достаточно для продолжения.
Если вы знаете, что может быть причиной этой странной проблемы, пожалуйста, опубликуйте ее!Спасибо!