30 votes

Pourquoi Rspec indique-t-il "Failure/Error : Impossible de trouver la ligne correspondante dans le backtrace" ?

Je suis le tutoriel sur les rails ici : http://railstutorial.org/chapters/filling-in-the-layout#top

Lorsque j'exécute "rspec spec/", j'obtiens une série d'erreurs qui ressemblent à ceci :

1) LayoutLinks should have a Home page at '/'
    Failure/Error: Unable to find matching line from backtrace
    stack level too deep
    # C:/Ruby19/lib/ruby/1.9.1/forwardable.rb:185

2) LayoutLinks should have a Contact page at '/contact'
    Failure/Error: Unable to find matching line from backtrace
    stack level too deep
    # C:/Ruby19/lib/ruby/1.9.1/forwardable.rb:185

Mais lorsque je vais dans mon navigateur web sur localhost:3000/ et localhost:3000/contact, les pages sont là et les titres corrects sont là. Voici mon myrailsroot \spec\requests\layout_links_spec.rb fichier :

require 'spec_helper'

describe "LayoutLinks" do

  it "should have a Home page at '/'" do
    get '/'
    response.should have_selector('title', :content => "Home")
  end

  it "should have a Contact page at '/contact'" do
    get '/contact'
    response.should have_selector('title', :content => "Contact")
  end

  it "should have an About page at '/about'" do
    get '/about'
    response.should have_selector('title', :content => "About")
  end

  it "should have a Help page at '/help'" do
    get '/help'
    response.should have_selector('title', :content => "Help")
  end

  it "should have a signup page at '/signup'" do
    get '/signup'
    response.should have_selector('title', :content => "Sign up")
  end

end

Toute idée serait la bienvenue, merci.

14voto

AboutRuby Points 4675

Ceci est dû à un bogue dans RSpec 2.0.0.beta.19. Si vous utilisez 2.0.0.beta.18 comme le suggère le tutoriel, cela fonctionnera bien. Changez simplement la version que vous avez dans votre Gemfile pour beta 18, installez bundle et exécutez les tests à nouveau.

Voici les parties pertinentes de mon Gemfile.

group :development do
  gem 'rspec-rails', '2.0.0.beta.18'
end

group :test do
  gem 'rspec-rails', '2.0.0.beta.18'
  gem 'spork', '0.8.4'
end

Notez également que Spork peut aussi causer des problèmes de ce genre de temps en temps. Si vous obtenez des échecs de test inexplicables, surtout si vous venez d'ajouter de nouveaux contrôleurs ou actions, allez donner un coup de pied à Spork. Appuyez sur Ctrl-C et relancez le serveur spork.

9voto

Jing Points 101

Mon gemfile ressemblait à ceci et cela fonctionne

group :test do 
    gem 'rspec-rails'
    gem 'webrat', '0.7.1'
end

où rspec-rails (2.1.0)

mais la suite ne le fait pas :

group :test do 
    gem 'rspec-rails'
    gem 'webrat', '0.7.2'
end

Donc je pense que c'est webrat joue en haut.

3voto

Chris Points 13472

J'ai mis à jour vers la version bêta.20 qui est maintenant disponible. J'ai dû ajouter webrat dans mon gemfile et faire une autre installation groupée. Dans le fichier gemfile, cela ressemble à ceci :

group :test do
  gem "webrat"
  gem 'rspec', '2.0.0.beta.20'
end

Cheers

1voto

Paul Pettengill Points 11

Je ne rencontre ce problème que pour deux de mes tests de titres.

Mon gemfile est le suivant...

source 'http://rubygems.org'

gem 'rails', '3.0.0'
gem 'sqlite3-ruby', '1.2.5', :require => 'sqlite3'
gem 'gravatar_image_tag', '0.1.0'
gem 'will_paginate', '3.0.pre2'

group :development do
  gem 'rspec-rails', '2.0.0.rc'
  gem 'webrat', '0.7.1'
  gem 'annotate-models', '1.0.4'
  gem 'faker', '0.3.1'
end

group :test do
  gem 'rspec', '2.0.0.rc'
  gem 'webrat', '0.7.1'
  gem 'spork', '0.8.4'
  gem 'factory_girl_rails', '1.0'
end

J'ai également essayé les bêtas de rspec-rails, sans succès.

Les deux titres qui me donnent encore des erreurs sont les suivants :

De users_controller_spec.rc

  it "should have the right title" do
    get :index
    response.should have_selector("title", :content => "All users")
  end

  #...

    it "should have the right title" do
      post :create, :user => @attr
      response.should have_selector("title", :content => "Sign up")
    end

L'extrait des erreurs se lit comme suit :

Failures:
  1) UsersController GET 'index' for signed-in users should have the right title
     Failure/Error: response.should have_selector("title", :content => "All users")
     expected following output to contain a <title>All users</title> tag:
     <!DOCTYPE html>
     <html>
     <head>
     <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
     <title>Ruby on Rails Tutorial Sample App | All Users</title>

et

2) UsersController Post 'create' for non-signed in users failure should have the right title
     Failure/Error: response.should have_selector("title", :content => "Sign up")
     expected following output to contain a <title>Sign up</title> tag:
     <!DOCTYPE html>
     <html>
     <head>
     <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
     <title>Ruby on Rails Tutorial Sample App | Sign Up</title>

respectivement.

Comme le montre le résultat, "Sign Up" et "Index" sont clairement affichés à droite du titre. Ceci nous laisse particulièrement perplexes, car le test suivant fonctionne :

  it "should have the right title" do
    get :new
    response.should have_selector("title", :content => "Sign up")
  end

Ce test concerne la même page et contient le même titre que l'autre test "Sign Up". De plus, la méthode get fonctionne dans ce test mais pas dans le test "Index".

Aide ?

1voto

E. Sambo Points 176

Cela ne semble pas être un problème à partir de rspec 2.2.0

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X