2011-03-19 6 views
7

Estoy al final del capítulo cinco haciendo los ejercicios. Se supone que debo probar que los enlaces van a las páginas correctas. Aquí está mi código de prueba.mi prueba rspec no pasará: tutorial de rieles de Michael Hartl

require 'spec_helper' 

describe "LayoutLinks" do 

    it "should have the right links on the layout" do 
     visit root_path 
     click_link "About" 
     response.should have_selector('title', :content => "About") 
     click_link "Home" 
     response.should have_selector('title', :content => "Home") 
     click_link "Help" 
     response.should have_selector('title', :content => "Help") 
     click_link "Contact" 
     response.should have_selector('title', :content => "Contact") 
     click_link "Sign up now!" 
     response.should have_selector('title', :content => "Sign up") 
     end 
     end 

Todo pasa a excepción de la última prueba. Dice que no puede encontrar un enlace con el texto "¡Regístrese ahora!" . Sé que la página tiene un "¡Regístrese ahora!" enlazar. Pensé que tal vez se procesara de manera diferente en el código fuente, pero cuando miro el código fuente parece normal <a href="/signup" class="signup_button round">Sign up now!</a>. Según entiendo, se supone que debe hacer clic en los enlaces y luego probar si el título coincide con el símbolo de contenido. ¿Estoy malentendiendo algo?

aquí es el error que estoy recibiendo: "! Regístrate ahora"

Failures: 

    1) LayoutLinks should have the right links on the layout 
    Failure/Error: click_link "Sign up now!" 
    Webrat::NotFoundError: 
     Could not find link with text or title or id "Sign up now!" 
+1

También probé ajuste: "! Regístrate ahora" content => solo para experimentar, pero el problema parece ser encontrar el enlace en el root_path y no en la respuesta. –

+0

plano general, pero funciona si elimina el signo de exclamación. 'click_link" Regístrate ahora "' – lebreeze

+0

Acabo de probar eso. Me da el mismo error. ¡También intenté tomar el! fuera del enlace. –

Respuesta

9

Creo que el problema es que la el enlace de hecho no está en todas las páginas, y esta prueba realmente navega por las páginas.

Al menos en la versión de este tutorial que encontré hace algún tiempo, ese enlace solo estaba en la página de inicio.

Si agrega visit root_path justo antes de ese último click_link, es probable que funcione.

Una prueba mejor tendría esa verificación en una prueba independiente relacionada específicamente con la página de inicio.

+0

¡increíble! Seguí adelante e hice una prueba independiente. No me di cuenta de que estaba probando todas las páginas. Pensé que debido a que visité root_path, solo estaba probando enlaces exclusivamente en la página de inicio. –

+1

Me colgué aquí también y me proporcionó la respuesta, @DonRoby. ¡Gracias! – BenU

0

Además, el texto del título es "Sign Up". Capital 'U'.

La línea tiene que ser: consejos

response.should have_selector('title', :content => "Sign Up") 

del respuesta antes de hacer una visit root_path es innecesario si la página visitados justo antes de que éste es "Home"

+0

Solo para aclarar la afirmación de Marc --- la función click_link en realidad, ya sabes, * navega hacia esa página. * Rspec no está probando * todas * las páginas, solo la que está visitando @ en ese momento. Si eso resulta ser "Inicio", como señala Marc, el "¡Regístrese ahora!" el enlace estará disponible. – invaliduser

0

La razón por la prueba no va a funcionar es porque necesita ejecutar:

$ rake db:test:prepare 

al menos, por eso mis pruebas no estaban pasando.

he encontrado la solución in this forum

Cuestiones relacionadas