ruby on rails - ¿Por qué Rspec dice "Error/error: no se puede encontrar la línea coincidente desde la traza inversa"?
ruby-on-rails ruby-on-rails-3 (11)
Estoy siguiendo el tutorial de rieles aquí: http://railstutorial.org/chapters/filling-in-the-layout#top
Cuando ejecuto "especificación rspec /", recibo un montón de errores que se ven así:
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
Pero cuando voy a mi buscador web a localhost: 3000 / y localhost: 3000 / contact, las páginas están allí y los títulos correctos están allí. Aquí está mi archivo 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
Cualquier idea sería genial, gracias
"Golpeó" a Spork y me arregló el problema.
Actualicé a beta.20 que ahora está fuera. Tuve que agregar webrat en mi gemfile y hacer otra instalación de paquete. En el gemfile, se ve así:
group :test do
gem "webrat"
gem ''rspec'', ''2.0.0.beta.20''
end
Aclamaciones
Esto no parece ser un problema a partir de rspec 2.2.0
Esto se debe a un error en RSpec 2.0.0.beta.19. Si usa 2.0.0.beta.18 como sugiere el tutorial, funcionará bien. Simplemente cambie la versión que tenga en su Gemfile a beta 18, realice la instalación del paquete y vuelva a ejecutar las pruebas.
Aquí están las partes relevantes de mi 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
También tenga en cuenta que Spork también puede causar problemas como este de vez en cuando. Si obtiene fallas de prueba inexplicables, especialmente si acaba de agregar nuevos controladores o acciones, vaya a dar una patada a spork. Presiona Ctrl-C y ejecuta el servidor spork nuevamente.
LO CONSEGUYO FUNCIONANDO
CAMINO__! más información de la que necesita, pero por lo que vale, este Gemfile ...
source ''http://rubygems.org''
gem ''rails'', ''3.0.3''
# Bundle edge Rails instead: <br/>
# gem ''rails'', :git => ''git://github.com/rails/rails.git''
gem ''sqlite3-ruby'', :require => ''sqlite3''
# Use unicorn as the web server<br/>
# gem ''unicorn''
# Deploy with Capistrano<br/>
# gem ''capistrano''
# To use debugger (ruby-debug for Ruby 1.8.7+, ruby-debug19 for Ruby 1.9.2+)<br/>
# gem ''ruby-debug''<br/>
# gem ''ruby-debug19''
# Bundle the extra gems:<br/>
# gem ''bj''<br/>
# gem ''nokogiri''<br/>
# gem ''sqlite3-ruby'', :require => ''sqlite3''<br/>
# gem ''aws-s3'', :require => ''aws/s3''<br/>
# Bundle gems for the local environment. Make sure to<br/>
# put test-only gems in this group so their generators<br/>
# and rake tasks are available in development mode:<br/>
# group :development, :test do<br/>
# gem ''webrat''<br/>
# end<br/>
group :test, :development do<br/>
gem ''rspec-rails'', ''2.0.0.beta.18''<br/>
# gem ''capybara''<br/>
gem ''webrat'', ''0.7.1''<br/>
gem ''database_cleaner''<br/>
gem ''cucumber-rails''<br/>
gem ''cucumber''<br/>
gem ''spork''<br/>
gem ''launchy''<br/>
end
... después de correr ...
$ bundle install
... y ...
$ bundle update webrat
... resultados en este ... paquete ...
Using rake (0.8.7) <br/>
Using abstract (1.0.0) <br/>
Using activesupport (3.0.3) <br/>
Using builder (2.1.2) <br/>
Using i18n (0.5.0) <br/>
Using activemodel (3.0.3) <br/>
Using erubis (2.6.6) <br/>
Using rack (1.2.1) <br/>
Using rack-mount (0.6.13) <br/>
Using rack-test (0.5.7) <br/>
Using tzinfo (0.3.23) <br/>
Using actionpack (3.0.3) <br/>
Using mime-types (1.16) <br/>
Using polyglot (0.3.1) <br/>
Using treetop (1.4.9) <br/>
Using mail (2.2.14) <br/>
Using actionmailer (3.0.3) <br/>
Using arel (2.0.7) <br/>
Using activerecord (3.0.3) <br/>
Using activeresource (3.0.3) <br/>
Using bundler (1.0.7) <br/>
Using configuration (1.2.0) <br/>
Using diff-lcs (1.1.2) <br/>
Using json (1.4.6) <br/>
Using gherkin (2.3.3) <br/>
Using term-ansicolor (1.0.5) <br/>
Using cucumber (0.10.0) <br/>
Using cucumber-rails (0.3.2) <br/>
Using database_cleaner (0.6.0) <br/>
Using launchy (0.3.7) <br/>
Using nokogiri (1.4.4) <br/>
Using thor (0.14.6) <br/>
Using railties (3.0.3) <br/>
Using rails (3.0.3) <br/>
Using rspec-core (2.4.0) <br/>
Using rspec-expectations (2.4.0) <br/>
Using rspec-mocks (2.4.0) <br/>
Using rspec (2.4.0) <br/>
Using webrat (0.7.1) <br/>
Using rspec-rails (2.0.0.beta.18) <br/>
Using spork (0.8.4) <br/>
Using sqlite3-ruby (1.3.2)
... que obtuvo todas las pruebas de aplicación de muestra (hasta el final del Capítulo 5) para ejecutar nuevamente.
Lo siguiente me solucionó el problema.
gem install rspec-rails
sudo apt-get install libxslt-dev libxml2-dev
bundle install
rails generate rspec:install
Puedo confirmar que el siguiente Gemfile funciona correctamente ...
group :test do
gem ''rspec'', ''2.0.0.beta.18''
gem ''spork'', ''0.8.4''
gem ''webrat'', ''0.7.1''
end
Solo veo este problema en dos de mis exámenes de título.
Mi gemfile es el siguiente ...
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
También probé las versiones beta de rspec-rails, sin éxito.
Los dos títulos que aún me dan errores son los siguientes:
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
El fragmento de los errores dice:
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>
y
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>
respectivamente.
Como se ve en la salida, "Registrarse" e "Índice" se muestran claramente a la derecha del título. Esto es particularmente desconcertante en eso, la siguiente prueba funciona:
it "should have the right title" do
get :new
response.should have_selector("title", :content => "Sign up")
end
Que es para la misma página y contiene el mismo título que la otra prueba de "Registrarse". También el método get funciona en esta prueba pero no en la prueba "Index".
¿Ayuda?
Todavía estaba viendo este problema hasta que especifiqué webrat 0.7.1.
jaja, reiniciar spork y autotest hizo el truco. necesita una buena patada de vez en cuando. Estoy ejecutando rspec-rails 2.6.1 por cierto ...
mi gemfile se veía así y funciona
group :test do
gem ''rspec-rails''
gem ''webrat'', ''0.7.1''
end
donde rspec-rails (2.1.0)
sin embargo, lo siguiente no:
group :test do
gem ''rspec-rails''
gem ''webrat'', ''0.7.2''
end
Así que creo que es webrat juega hasta.