2014-01-16 45 views
1

所以我一直试图跟随rails教程,但我一直坚持使标题略微动态。有一次,我去this part和运行Rails教程第3章Rspec测试失败

$ bundle exec rspec spec/requests/static_pages_spec.rb 

我收到以下错误

Failures: 

    1) Static pages Help page should have the title 'Help' 
    Failure/Error: expect(page).to have_title("Ruby on Rails Tutorial Sample App | Help") 
     expected #has_title?("Ruby on Rails Tutorial Sample App | Help") to return true, got false 
    # ./spec/requests/static_pages_spec.rb:27:in `block (3 levels) in <top (required)>' 

    2) Static pages Home page should have the title 'Home' 
    Failure/Error: expect(page).to have_title("Ruby on Rails Tutorial Sample App | Home") 
     expected #has_title?("Ruby on Rails Tutorial Sample App | Home") to return true, got false 
    # ./spec/requests/static_pages_spec.rb:14:in `block (3 levels) in <top (required)>' 

    3) Static pages About page should have the title 'About Us' 
    Failure/Error: expect(page).to have_title("Ruby on Rails Tutorial Sample App | About Us") 
     expected #has_title?("Ruby on Rails Tutorial Sample App | About Us") to return true, got false 
    # ./spec/requests/static_pages_spec.rb:40:in `block (3 levels) in <top (required)>' 

Finished in 0.1826 seconds 
6 examples, 3 failures 

Failed examples: 

rspec ./spec/requests/static_pages_spec.rb:25 # Static pages Help page should have the title 'Help' 
rspec ./spec/requests/static_pages_spec.rb:12 # Static pages Home page should have the title 'Home' 
rspec ./spec/requests/static_pages_spec.rb:38 # Static pages About page should have the title 'About Us' 

这是我的家,帮助和关于意见等。

首页

<% provide(:title, 'Home') %> 
<h1>Sample App</h1> 
<p> 
    This is the home page for the 
    <a href="http://railstutorial.org/">Ruby on Rails Tutorial</a> 
    sample application. 
</p> 

帮助

<% provide(:title, 'Help') %> 
<h1>Help</h1> 
<p> 
    Get help on the Ruby on Rails Tutorial at the 
    <a href="http://railstutorial.org/help">Rails Tutorial help page</a>. 
    To get help on this sample app, see the 
    <a href="http://railstutorial.org/book">Rails Tutorial book</a>. 
</p> 

关于

<%= provide(:title, 'About Us') %> 
<h1>About Us</h1> 
<p> 
    The <a href="http://railstutorial.org/">Ruby on Rails Tutorial</a> 
    is a project to make a book and screencasts to teach web development 
    with <a href="http://rubyonrails.org/">Ruby on Rails</a>. This 
    is the sample application for the tutorial. 
</p> 

这是我的观点应用

<!DOCTYPE html> 
<html> 
<head> 
    <title>Ruby on Rails Tutorial Sample App | <%= yield (:title) %></title> 
    <%= stylesheet_link_tag "application", media: "all", 
              "data-turbolinks-track" => true %> 
    <%= javascript_include_tag "application", "data-turbolinks-track" => true %> 
    <%= csrf_meta_tags %> 
</head> 
<body> 

<%= yield %> 

</body> 
</html> 

我的静态页面规格

require 'spec_helper' 

describe "Static pages" do 

    describe "Home page" do 

    it "should have the content 'Sample App'" do 
     visit '/static_pages/home' 
     expect(page).to have_content('Sample App') 
    end 

    it "should have the title 'Home'" do 
     visit '/static_pages/home' 
     expect(page).to have_title("Ruby on Rails Tutorial Sample App | Home") 
    end 
    end 

    describe "Help page" do 

    it "should have the content 'Help'" do 
     visit '/static_pages/help' 
     expect(page).to have_content('Help') 
    end 

    it "should have the title 'Help'" do 
     visit '/static_pages/help' 
     expect(page).to have_title("Ruby on Rails Tutorial Sample App | Help") 
    end 
    end 

    describe "About page" do 

    it "should have the content 'About Us'" do 
     visit '/static_pages/about' 
     expect(page).to have_content('About Us') 
    end 

    it "should have the title 'About Us'" do 
     visit '/static_pages/about' 
     expect(page).to have_title("Ruby on Rails Tutorial Sample App | About Us") 
    end 
    end 
end 

,最后我的Gemfile

source 'https://rubygems.org' 
ruby '2.1.0' 
#ruby-gemset=railstutorial_rails_4_0 

gem 'rails', '4.0.2' 

group :development, :test do 
    gem 'sqlite3', '1.3.8' 
    gem 'rspec-rails', '2.13.1' 
end 

group :test do 
    gem 'selenium-webdriver', '2.35.1' 
    gem 'capybara', '2.1.0' 
end 

gem 'sass-rails', '4.0.1' 
gem 'uglifier', '2.1.1' 
gem 'coffee-rails', '4.0.1' 
gem 'jquery-rails', '3.0.4' 
gem 'turbolinks', '1.1.1' 
gem 'jbuilder', '1.0.2' 

group :doc do 
    gem 'sdoc', '0.3.20', require: false 
end 

group :production do 
    gem 'pg', '0.15.1' 
    gem 'rails_12factor', '0.0.2' 
end 

回答

1

更改您的视图像下面(通知=提供在第一行之前)。执行相同的所有三个视图

首页

<%= provide(:title, 'Home') %> 
<h1>Sample App</h1> 
<p> 
    This is the home page for the 
    <a href="http://railstutorial.org/">Ruby on Rails Tutorial</a> 
    sample application. 
</p> 
0

您是否尝试过手动将每一页,并检查自己的称号?

我粘贴了字面上你提供给项目的所有东西(我之前做过这个教程,所以我已经有一个和static_pages控制器一起设置)并且所有这些测试都通过了。我会说你可能混淆了你的视图的文件名,或者路由文件中的名字,但是内容测试正在传递,所以不能这样做。我想有可能你的一个文件被编辑器保存为错误的编码,或者其他的东西。在运行测试之前,请检查是否已经保存了所有文件。

另外一个快速注意,=是不必要的<% provide ...所以你可能应该从你的看法中删除它。

0

我想你可能已经忘记了在 '联系人' 页面添加到您的routes.rb文件,像这样:

SampleApp::Application.routes.draw do 
    get "static_pages/home" 
    get "static_pages/help" 
    get "static_pages/about" 
    get "static_pages/contact" 
0

试试这个:

static_pages_spec.rb

require 'spec_helper' 

describe "Static pages" do 

    let(:base_title) { "Ruby on Rails Tutorial Sample App" } 

    describe "Home page" do 

    it "should have the content 'Sample App'" do 
     visit '/static_pages/home' 
     expect(page).to have_content('Sample App') 
    end 

    it "should have the title 'Home'" do 
     visit '/static_pages/home' 
     #expect(page).to have_title("#{base_title} | Home") 
     page.should have_title("#{base_title} | Home") 
    end 
    end 

    describe "Help page" do 

    it "should have the content 'Help'" do 
     visit '/static_pages/help' 
     expect(page).to have_content('Help') 
    end 

    it "should have the title 'Help'" do 
     visit '/static_pages/help' 
     #expect(page).to have_title("#{base_title} | Help") 
     page.should have_title("#{base_title} | Help") 
    end 
    end 

    describe "About page" do 

    it "should have the content 'About Us'" do 
     visit '/static_pages/about' 
     expect(page).to have_content('About Us') 
    end 

    it "should have the title 'About Us'" do 
     visit '/static_pages/about' 
     page.should have_title("#{base_title} | About Us") 
    end 
    end 

    describe "Contact page" do 

    it "should have the content 'Contact'" do 
     visit '/static_pages/contact' 
     expect(page).to have_content('Contact') 
    end 

    it "should have the title 'Contact'" do 
     visit '/static_pages/contact' 
    # expect(page).to have_title("#{base_title} | Contact") 
     page.should have_title("#{base_title} | Contact") 
    end 
    end 
end 

应用.html.erb

<!DOCTYPE html> 
    <html> 
    <head> 
    <title>Ruby on Rails Tutorial Sample App | <%= yield(:title)%></title> 
    <%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true %> 
    <%= javascript_include_tag "application", "data-turbolinks-track" => true %> 
    <%= csrf_meta_tags %> 
    </head> 
    <body> 
<%= yield %> 

</body> 
</html> 

宝石'水豚','2.1。0'

昵称中的空格

相关问题