Michael Hartl的rails教程第3章,rspec中的错误

时间:2014-05-21 18:39:26

标签: ruby-on-rails ruby rspec

我是Ruby on rails的新手。目前正在使用maverick的10.9.3,Rails 4.当我尝试运行rspec命令时,我收到以下错误。

这是我得到的错误:

rspec ./spec/controllers/pages_controller_spec.rb:35 # PagesController GET 'about' should have the right title
rspec ./spec/controllers/pages_controller_spec.rb:24 # PagesController GET 'contact' should have the right title
rspec ./spec/controllers/pages_controller_spec.rb:11 # PagesController GET 'home' should have the right title

我的Gemfile包括:

group :development, :test do
  gem 'rspec-rails', '2.14.2'
end

group :test do
  gem 'rspec', '2.14.1'
  gem 'spork', '0.9.0.rc'
end

也是我的pages_controller_spec.rb

require 'spec_helper'

describe PagesController do
  render_views

  describe "GET 'home'" do
    it "returns http success" do
      get 'home'
      response.should be_success
    end
    it "should have the right title" do
      get 'home'
      response.should have_selector("title", :content => "Ruby on Rails Tutorial Sample App | Home")
    end
  end

  describe "GET 'contact'" do
    it "returns http success" do
      get 'contact'
      response.should be_success
    end


    it "should have the right title" do
      get 'contact'
      response.should have_selector("title", :content => "Ruby on Rails Tutorial Sample App | Contact")
    end
  end
  describe "GET 'about'" do
    it "returns http success" do
      get 'about'
      response.should be_success
    end

    it "should have the right title" do
      get 'about'
      response.should have_selector("title", :content => "Ruby on Rails Tutorial Sample App | About")
    end
  end
end

以下评论中的控制器代码:

class PagesController < ApplicationController
  def home
  end

  def contact
  end

  def about
  end
end

3 个答案:

答案 0 :(得分:0)

您是否尝试过检查文档: https://relishapp.com/rspec

答案 1 :(得分:0)

它是否像小写一样简单&#34; a&#34;关于约vs?关于?

您的测试正在寻找字符串&#34; Ruby on Rails Tutorial Sample App |关于&#34;并且代码正在生成&#34; Ruby on Rails Tutorial Sample App |关于&#34 ;.据我所知,rspec区分大小写。

我看到的另一件事是必须设置:对于测试标题,可见为false。

答案 2 :(得分:0)

您可能还会遇到此错误 Ruby on Rail Michael Hartl's Chapter 3 Error。您可能会因为内置的Rails测试套件(在撰写本文时为'rails-controller-testing'-'1.0.2','minitest'-'5.10.3', 'minitest-reporters'-'1.1.14')

我建议您在阅读Michael Hartl的书以学习Rails时遵循其Gemfiles。

  

provide将一个标记块存储在一个标识符中,以备后用。在这种情况下,请在符号:title中使用“帮助”。报价包含在<% %>中,表示它正在执行此代码,并且没有在视图中打印出来。

     

yield在这种情况下只是吐出而被阻止。收益率包含在<%= %>中,以表明收益率已被打印到视图中。

     

将其视为设置变量并打印出变量。

     

有关更多信息,请参见:http://api.rubyonrails.org/classes/ActionView/Helpers/CaptureHelper.html#method-i-provide。请注意,provide实际上是content_for的包装,因此,该链接中的好地方就在这里。

这摘自以下StackOverflow文章:yield and provide() inside template