预期css“标题”与文本“Ruby on Rails Tutorial Sample App | Sign Up”返回一些内容

时间:2012-05-09 01:30:40

标签: ruby-on-rails ruby rspec capybara railstutorial.org

我正在研究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>

我不确定我做错了什么。如果我应该提供更多信息,请告诉我。

感谢。

2 个答案:

答案 0 :(得分:7)

您的测试期待“注册”,您正在通过“注册”。请注意“up”一词的大小写差异。

答案 1 :(得分:0)

您可以发布您的应用布局文件(/app/views/layouts/application.erb.html)文件吗?

我不确定,但看起来您可能正在为该文件的:title yield部分提供内容 - 并且可能将其替换为应用程序布局文件的位置可能不是您的认为

也就是说,在application.erb.html文件中,它看起来好像是一个部分yield :title - 但它可能不会像您的测试认为那样呈现。

您可以编辑问题并添加应用程序布局(或至少是相应的部分)吗?