我正在研究Michael Hartl的Ruby on Rails教程,并且我一直在进行一项我无法理解的失败测试。
这是我遇到的失败:
用户页面注册页面:
Failure/Error: it { should have_selector('title', text: full_title('Sign Up')) }
expected css "title" with text "Ruby on Rails Tutorial Sample App | Sign Up" to return something
# ./spec/requests/user_pages_spec.rb:11:in `block (3 levels) in <top (required)>'
这是我的测试文件:
require 'spec_helper'
describe "User pages" do
subject { page }
describe "signup page" do
before { visit signup_path }
it { should have_selector('h1', text: 'Sign up') }
it { should have_selector('title', text: full_title('Sign Up')) }
end
end
这是我的new.html.erb文件:
<% provide(:title, 'Sign up') %>
<h1>Sign up</h1>
<p>Find me in app/views/users/new.html.erb</p>
application_helper.rb:
module ApplicationHelper
# Returns the full title on a per-page basis.
def full_title(page_title)
base_title = 'Ruby on Rails Tutorial Sample App'
if page_title.empty?
base_title
else
"#{base_title} | #{page_title}"
end
end
end
application.html.erb:
<!DOCTYPE html>
<html>
<head>
<title><%= full_title(yield(:title)) %></title>
<%= stylesheet_link_tag "application", media: "all" %>
<%= javascript_include_tag "application" %>
<%= csrf_meta_tags %>
<%= render 'layouts/shim' %>
</head>
<body>
<%= render 'layouts/header' %>
<div class="container">
<%= yield %>
<%= render 'layouts/footer' %>
</div>
</body>
</html>
我不确定我做错了什么。如果我应该提供更多信息,请告诉我。
感谢。
答案 0 :(得分:7)
您的测试期待“注册”,您正在通过“注册”。请注意“up”一词的大小写差异。
答案 1 :(得分:0)
您可以发布您的应用布局文件(/app/views/layouts/application.erb.html
)文件吗?
我不确定,但看起来您可能正在为该文件的:title
yield部分提供内容 - 并且可能将其替换为应用程序布局文件的位置可能不是您的认为
也就是说,在application.erb.html
文件中,它看起来好像是一个部分yield :title
- 但它可能不会像您的测试认为那样呈现。
您可以编辑问题并添加应用程序布局(或至少是相应的部分)吗?