Hartl的Rails教程第3.5节

时间:2014-02-02 16:12:02

标签: ruby-on-rails ruby rspec

我一直在研究迈克尔·哈特尔的Rails教程,由于某种原因,我已经陷入了第3部分的第一个练习。我已经检查并重新检查了我的代码,以确保它与他匹配,但我仍然得到这个错误:

Failures:

  1) Static pages Contact page should have the content 'Contact'
     Failure/Error: expect(page).to have_content('Contact')
       expected #has_content?("Contact") to return true, got false
     # ./spec/requests/static_pages_spec.rb:48:in `block (3 levels) in <top (required)>'

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

Finished in 0.09624 seconds
8 examples, 2 failures

Failed examples:

rspec ./spec/requests/static_pages_spec.rb:46 # Static pages Contact page should have the content 'Contact'
rspec ./spec/requests/static_pages_spec.rb:51 # Static pages Contact page should have the title 'Contact'

这是我的代码

static_pages_spec.rb

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

  describe "Contact page" do

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

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

end

application.html.erb,保存在app / views / layouts

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

contact.html.erb

<% provide(:title, 'Contact') %>
<h1>Contact</h1>
<p>
  Contact Ruby on Rails Tutorial about the sample app at the
  <a href="http://railstutorial.org/contact">contact page</a>.
</p>

的routes.rb

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

static_pages_controller.rb

class StaticPagesController < ApplicationController
  def home
  end

  def help
  end

  def about
  end

  def contact
  end
end

1 个答案:

答案 0 :(得分:1)

由于您提供的信息有限(我知道当您是初学者时很难诊断,因此更容易)。看起来您正在告诉您的测试检查您的页面并检查仅存在于您的联系页面中的内容。