Rspec:渲染局部
Rspec: Rendering partials
我对 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>
虽然部分文件名是 _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:
尝试在 it
块之前包含 render_views
。
我对 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>
虽然部分文件名是 _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:
尝试在 it
块之前包含 render_views
。