2014-01-16 4 views
1

Так что я старался следовать вместе с учебником по рельсам, но я застрял на том, чтобы сделать заголовок слегка динамичным. После того, как я получаю this part и запуститьRails tutorial chapter 3 Rspec test failing

$ 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> 

gem 'capybara', '2.1.0 '

Оставайтесь с пробелами в названии

Смежные вопросы