2012-05-09 2 views
1

J'ai eu une erreur lors du test du code du tutoriel RoR, l'aide de pls avec ces problème, la liste est ci-dessous. Peut-être une mauvaise version de spec dans Gemfile.RSpec Erreur lors de la réalisation du tutoriel RoR

échecs:

1) PagesController GET 'home' should have the right title 
    Failure/Error: response.should have_selector("title", :content => "Home") 
    NoMethodError: 
     undefined method `has_selector?' for #<ActionController::TestResponse:0x007fb3d4d2d108> 
    # ./spec/controllers/pages_controller_spec.rb:14:in `block (3 levels) in <top (required)>' 

    2) PagesController GET 'contact' should have the right title 
    Failure/Error: response.should have_selector("title", :content => "Contact") 
    NoMethodError: 
     undefined method `has_selector?' for #<ActionController::TestResponse:0x007fb3d280b370> 
    # ./spec/controllers/pages_controller_spec.rb:26:in `block (3 levels) in <top (required)>' 

    3) PagesController GET 'about' should have the right title 
    Failure/Error: response.should have_selector("title", :content => "About") 
    NoMethodError: 
     undefined method `has_selector?' for #<ActionController::TestResponse:0x007fb3d2b96e90> 
    # ./spec/controllers/pages_controller_spec.rb:38:in `block (3 levels) in <top (required)>' 

    4) PagesController GET 'help' should have the right title 
    Failure/Error: response.should have_selector("title", :content => "Help") 
    NoMethodError: 
     undefined method `has_selector?' for #<ActionController::TestResponse:0x007fb3d28a19d8> 
    # ./spec/controllers/pages_controller_spec.rb:50:in `block (3 levels) in <top (required)>' 

Finished in 0.1005 seconds 
8 examples, 4 failures 

Failed examples: 

rspec ./spec/controllers/pages_controller_spec.rb:12 # PagesController GET 'home' 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:36 # PagesController GET 'about' should have the right title 
rspec ./spec/controllers/pages_controller_spec.rb:48 # PagesController GET 'help' should have the right title 

Gemfile:

source 'https://rubygems.org' 

gem 'rails', '3.2.3' 

gem 'sqlite3' 

group :assets do 
    gem 'sass-rails', '~> 3.2.3' 
    gem 'coffee-rails', '~> 3.2.1' 
    gem 'uglifier', '>= 1.0.3' 
end 

gem 'jquery-rails' 

group :test, :development do 
    gem "rspec-rails", "~> 2.10.1" 
end 

listing pages_controller_spec.rb:

require 'spec_helper' 

describe PagesController do 
    render_views 

    describe "GET 'home'" do 
    it "should be successful" do 
     get 'home' 
     response.should be_success 
    end 

    it "should have the right title" do 
     get 'home' 
     response.should have_selector("title", :content => "Home") 
    end 
    end 

    describe "GET 'contact'" do 
    it "should be successful" do 
     get 'contact' 
     response.should be_success 
    end 

    it "should have the right title" do 
     get 'contact' 
     response.should have_selector("title", :content => "Contact") 
    end 
    end 

    describe "GET 'about'" do 
    it "should be successful" do 
     get 'about' 
     response.should be_success 
    end 

    it "should have the right title" do 
     get 'about' 
     response.should have_selector("title", :content => "About") 
    end 
    end 

    describe "GET 'help'" do 
    it "should be successful" do 
     get 'help' 
     response.should be_success 
    end 

    it "should have the right title" do 
     get 'help' 
     response.should have_selector("title", :content => "Help") 
    end 
    end 
end 

Je n'understang pas ce qui est faux.

+0

C'est une méthode Webrat. Jetez un oeil à ceci: http://stackoverflow.com/questions/5388638/broken-controller-tests-after-installing-capybara –

Répondre

1

Si vous ne souhaitez pas utiliser Webrat, vous pouvez utiliser

response.body.should include 'Contact</h1>' 

Plutôt que

response.should have_selector("title", :content => "Contact") 

Ce qui est un peu moins propre, je suis d'accord.

0

Rééditer votre Gemfile et tapez

gem 'webrat' 

puis

Type

bundle install 
Questions connexes