2011-05-03 11 views
11

En mi archivo spec_helper.rb lo configuré específicamente para config.render_views pero el response.body que recibo todavía está vacío. Aquí está mi especificación básicaRSpec response.body todavía está vacío incluso con config.render_views

describe "#index" do 
    it "should list all rooms" do 
     get 'index' 
     stub(Person).all 
    end 

    it "responds with 200 response code" do 
     response.should be_ok 
    end 

    it "renders the index template" do 
     pp response.body 
     response.should render_template("people/index") 
    end 

    end 

¿Hay algo más que podría haber reducido este comportamiento? Está bien cuando reviso el navegador. Estoy en Rspec 2.5.0

Respuesta

7

¿Has intentado tener render_views en el archivo de especificaciones de tu controlador? Funciona para mi.

Otra cosa que noté es que solo tiene acceso a la página de índice una vez en sus casos de prueba, la primera para ser precisos. El resto devolverá contenido html vacío porque no hay respuesta.

Así es como lo implementaré. Pero si ya tiene config.render_views en el archivo * spec_helper.rb * y eso funciona, puede hacerlo sin el render_views en la especificación del controlador.

describe MyController 
    render_views 

    before :each do 
     get :index 
    end 

    describe "#index" do 
     it "should list all rooms" do 
      stub(Person).all 
     end 

     it "responds with 200 response code" do 
      response.should be_ok 
     end 

     it "renders the index template" do 
      pp response.body 
      response.should render_template("people/index") 
     end 
    end 
end 

EDIT: El cambio sutil aquí es la before blobk en el que yo llamo get :index para cada bloque it.

+0

Sí, I'e trataron las dos cosas. – CountCet

+0

¿Corrigió su código incluyendo 'get: index' en cada bloque' it'? – iGbanam

+1

Sin duda necesita 'get: index' en cada prueba, o mejor, en un' before' como lo ha demostrado @Yasky. Su 'stub' tampoco está haciendo nada en la prueba en la que se encuentra. Tropezar después del' get' no va a tener ningún efecto. Tampoco está devolviendo nada del talón. –

0

Esto fue cambiado de RSpec 1 a RSpec 2. Ver especificaciones ahora utilizar rendered en lugar de response:

rendered.should =~ /some text/

Más información en la release notes on github.

+0

No estoy en una especificación de vista, es una especificación de controlador y los documentos aún muestran que se trata de una respuesta de esta manera – CountCet

+0

Hmm. ¿Funciona si pones 'render_views' en el ejemplo? – zetetic

3

He tenido el mismo problema.

La solución fue especificar el formato de la solicitud.

Por ejemplo: get :some_action, some_param: 12121, format: 'json'

Cuestiones relacionadas