2010-10-19 19 views
9

Me estoy ejecutando a través del Rails Tutorial de Michael Hartl.Verificando el título de la página con rspec

Estoy tratando de verificar el título de mi página. La prueba es el siguiente: sección de la cabeza

it "should have the right title" do 
     get 'home' 
     response.should have_selector("title", :content => "Ruby on Rails Tutorial Sample App | Home") 
    end 

el HTML se parece a esto

<head> 
    <title>Ruby on Rails Tutorial Sample App | Home</title> 
</head> 

Estoy recibiendo el siguiente fallo

1) PagesController GET 'home' should have the right title Failure/Error: response.should have_selector("title", :content => "Ruby on Rails Tutorial Sample App | Home") expected following output to contain a Ruby on Rails Tutorial Sample App | Home tag: # ./spec/controllers/pages_controller_spec.rb:13:in `block (3 levels) in '

Estoy esperando que esto pase. ¿Qué estoy haciendo mal? Estoy usando Rails 3 y RSpec 2.0.0

Respuesta

4

Las especificaciones del controlador normalmente no ofrecen la vista completa, ya que están destinadas a probar los controladores de forma aislada. Se puede decir Rspec a prestar toda la página mediante la inclusión de la directiva integrate_views en la parte superior del ejemplo de grupo:

describe MyController do 
    integrate_views 

Sin embargo, usted debe preguntarse si realmente quiere hacer esto, o si sería más lógico escribir ver especificaciones.

por cierto también se puede utilizar la sintaxis del selector CSS3 para ahorrar unos cuantos golpes de teclado (podría necesitar incluir los comparadores Webrat para esto):

response.should have_selector("title:contains('Ruby on Rails Tutorial Sample App | Home')") 

EDITAR

Para Rspec2, reemplace integrate_views con render_views

+0

He intentado poner la directiva integrate_views en la parte superior, pero ahora estoy recibiendo un error de sintaxis –

+2

Vaya, usted debe estar en Rspec 2. Trate 'render_views' . – zetetic

+0

Gracias, ¿tal vez simplemente edite su respuesta para decir que debería usar render_views en Rspec 2? –

0

Sospecho que tienes un error tipográfico en alguna parte.

A partir de este instante, estoy trabajando en el Ejercicio 4 del Capítulo 11. Cada problema que tuve con el tutorial resultó ser un error de mi parte.

Nota: No estoy cortando y pegando. Estoy perforando todo el código a mano.

+0

Hice lo de copiar y pegar ... Y funcionó perfectamente una vez que puse render_views en la parte superior –

2

Me pareció más fácil moverme a Capybara (estoy usando Rails 3.0.1, Rspec 2.0.1, Ruby 1.9.2). Ahora puede hacer algo como

page.should have_css('title', :text => 'Ruby on Rails Tutorial Sample App | Home') 
2

Esta pregunta parece vieja, lo que explica por qué ahora hay una manera mejor.

La siguiente funciona bien para mí:

it "has the correct page title", js: true do 
    visit "https://stackoverflow.com/users/sign_in" # for example 
    expect(page.title).to include "Sign In or Create a New Account" 
end 
+1

Además, debe tener mucho cuidado al usar el método 'include' en este caso. Si tiene esa cadena en el título, pasará, sin embargo, puede haber cosas no deseadas también. Recomiendo usar el método 'eq' en este caso, ya que fallará si no se pasa la cadena exacta. –

Cuestiones relacionadas