Perché Rspec dice “Errore / Errore: imansible trovare la linea corrispondente da backtrace”?

Sto seguendo il tutorial sui binari qui: http://railstutorial.org/chapters/filling-in-the-layout#top

Quando eseguo “rspec spec /”, ottengo un sacco di errori che assomigliano a questo:

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 

Ma quando vado nel mio browser web a localhost: 3000 / e localhost: 3000 / contact, le pagine sono lì e ci sono i titoli corretti. Ecco il mio file myrailsroot \ spec \ requests \ layout_links_spec.rb:

 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 

Qualsiasi idea sarebbe grandiosa, grazie

Ciò è dovuto a un bug in RSpec 2.0.0.beta.19. Se si utilizza 2.0.0.beta.18 come suggerisce il tutorial, funzionerà correttamente. Basta cambiare la versione che hai nel tuo Gemfile alla versione beta 18, installare bundle ed eseguire nuovamente i test.

Ecco le parti rilevanti dal mio 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 

Si noti inoltre che Spork può anche causare problemi di questo tipo di volta in volta. Se ottieni inspiegabili fallimenti del test, specialmente se hai appena aggiunto nuovi controller o azioni, vai a dare un calcio. Premi Ctrl-C ed esegui nuovamente il server Spork.

il mio gemfile sembrava così e funziona

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

dove rspec-rails (2.1.0)

tuttavia non segue:

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

Quindi penso che Webrat giochi.

Ho aggiornato alla versione beta.20 che ora è disponibile. Ho dovuto aggiungere webrat nel mio gemfile e fare un altro pacchetto di installazione. Nel file gem, sembra questo:

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

Saluti

Sto vedendo questo problema solo per due dei miei test sul titolo.

Il mio gemfile è il seguente …

 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 

Ho provato anche le beta per rspec-rails, inutilmente.

I due titoli che mi danno ancora errori sono i seguenti:

Da 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 

Lo snippet degli errori riporta:

 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 All users tag:     Ruby on Rails Tutorial Sample App | All Users 

e

 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 Sign up tag:     Ruby on Rails Tutorial Sample App | Sign Up 

rispettivamente.

Come visto dall’output, “Sign Up” e “Index” sono chiaramente mostrati a destra del titolo. Ciò è particolarmente sconcertante in quanto, il seguente test funziona:

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

Che è per la stessa pagina e contiene lo stesso titolo dell’altra prova “Registrati”. Anche il metodo get funziona in questo test ma non nel test “Index”.

Aiuto?

Questo non sembra essere un problema da rspec 2.2.0

Posso confermare che il seguente Gemfile funziona correttamente …

 group :test do gem 'rspec', '2.0.0.beta.18' gem 'spork', '0.8.4' gem 'webrat', '0.7.1' end 

L’ho fatto funzionare

MODO__! più informazioni di quelle che ti servono, ma per quello che vale, questo Gemfile …

 source 'http://rubygems.org' gem 'rails', '3.0.3' # Bundle edge Rails instead: 
# gem 'rails', :git => 'git://github.com/rails/rails.git' gem 'sqlite3-ruby', :require => 'sqlite3' # Use unicorn as the web server
# gem 'unicorn' # Deploy with Capistrano
# gem 'capistrano' # To use debugger (ruby-debug for Ruby 1.8.7+, ruby-debug19 for Ruby 1.9.2+)
# gem 'ruby-debug'
# gem 'ruby-debug19' # Bundle the extra gems:
# gem 'bj'
# gem 'nokogiri'
# gem 'sqlite3-ruby', :require => 'sqlite3'
# gem 'aws-s3', :require => 'aws/s3'
# Bundle gems for the local environment. Make sure to
# put test-only gems in this group so their generators
# and rake tasks are available in development mode:
# group :development, :test do
# gem 'webrat'
# end
group :test, :development do
gem 'rspec-rails', '2.0.0.beta.18'
# gem 'capybara'
gem 'webrat', '0.7.1'
gem 'database_cleaner'
gem 'cucumber-rails'
gem 'cucumber'
gem 'spork'
gem 'launchy'
end

… dopo che corro …

 $ bundle install 

… e …

 $ bundle update webrat 

… risulta in questo … pacchetto …

 Using rake (0.8.7) 
Using abstract (1.0.0)
Using activesupport (3.0.3)
Using builder (2.1.2)
Using i18n (0.5.0)
Using activemodel (3.0.3)
Using erubis (2.6.6)
Using rack (1.2.1)
Using rack-mount (0.6.13)
Using rack-test (0.5.7)
Using tzinfo (0.3.23)
Using actionpack (3.0.3)
Using mime-types (1.16)
Using polyglot (0.3.1)
Using treetop (1.4.9)
Using mail (2.2.14)
Using actionmailer (3.0.3)
Using arel (2.0.7)
Using activerecord (3.0.3)
Using activeresource (3.0.3)
Using bundler (1.0.7)
Using configuration (1.2.0)
Using diff-lcs (1.1.2)
Using json (1.4.6)
Using gherkin (2.3.3)
Using term-ansicolor (1.0.5)
Using cucumber (0.10.0)
Using cucumber-rails (0.3.2)
Using database_cleaner (0.6.0)
Using launchy (0.3.7)
Using nokogiri (1.4.4)
Using thor (0.14.6)
Using railties (3.0.3)
Using rails (3.0.3)
Using rspec-core (2.4.0)
Using rspec-expectations (2.4.0)
Using rspec-mocks (2.4.0)
Using rspec (2.4.0)
Using webrat (0.7.1)
Using rspec-rails (2.0.0.beta.18)
Using spork (0.8.4)
Using sqlite3-ruby (1.3.2)

… che ha ottenuto tutti i test delle applicazioni di esempio (fino alla fine del Capitolo 5) per essere eseguiti di nuovo.

Stavo ancora vedendo questo problema fino a quando ho specificato webrat 0.7.1.

Il seguente ha risolto il problema per me.

 gem install rspec-rails sudo apt-get install libxslt-dev libxml2-dev bundle install rails generate rspec:install 

haha, riavvio spork e autotest ha fatto il trucco. ha bisogno di un bel calcio ogni tanto. sto correndo rspec-rails 2.6.1 btw …

“Kicked” Spork e risolto il problema per me.