Rspec:渲染部分

时间:2015-11-09 22:10:37

标签: rspec rspec-rails

我对Rspec来说有点新鲜,这可能是一个容易回答的问题。

尝试运行测试时出现此错误:

Failure/Error: expect(view).to render_template(:partial => "_ad_column", :count => 2)                                                                                expecting _ad_column to be rendered 2 time(s) but rendered 0 time(s)                                                                                             # ./spec/views/requests_spec.rb:5:in `block (2 levels) in <top (required)>'

这是我的测试文件:

require 'rails_helper'

RSpec.describe "requests/index", :type => :view do
  it "renders _ad_column" do
    expect(view).to render_template(:partial => "_ad_column", :count => 2)
  end
end

基本上我有一个部分在每个页面上呈现两次,它在application.html.erb中设置,我试图确保它在测试期间出现。 我在这做错了什么?谢谢!

编辑:

这是我正在测试的视图页面(application.html.erb):

<!DOCTYPE html>
<html>
  <head>
    <title>Spellhub</title>
    <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true %>
    <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
    <%= csrf_meta_tags %>
  </head>
  <body>
    <div class="masthead">
      <%= render 'layouts/header' %>
      <!--<h5 class="muted">POC Application</h5>-->
    </div>
    <hr>

    <!-- required parent element for sticky ad-columns -->
    <div class="container-fluid">
      <!-- left column -->
      <%= render 'shared/ad_column', direction: 'left' %>

      <!-- page content goes here -->
      <div class="col-xs-8">
        <!-- for page flash alerts / to do -->
        <%= render 'layouts/messages' %>

        <%= yield %>
      </div>

      <!-- right column -->
      <%= render 'shared/ad_column', direction: 'right' %>
    </div>
  </body>
</html>

1 个答案:

答案 0 :(得分:0)

虽然部分文件名是_ad_column,但断言只是ad_column

编辑:

由于您的部分位于共享位置,因此您可能需要在shared/ad_column上声明。

编辑2:

我错了,你应该对部分shared/_ad_column断言。

我认为您缺少的是实际获取和显示视图。

这有用吗?

it "renders _ad_column" do
  get "/" # Assuming this is the page you are trying to get.
  expect(response).to render_template(:partial => "shared/_ad_column", :count => 2)
end

编辑3: 尝试在render_views阻止之前加入it