随机ActionView :: Template ::由RSpec引发但在浏览器中引发的错误

时间:2011-01-08 02:07:12

标签: ruby-on-rails ruby rspec

我编写了一些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。如果需要,我可以提供更多详细信息或代码片段,但我认为这已经足够了。

如果你知道可能导致这个奇怪问题的原因,请发布!谢谢!

0 个答案:

没有答案