2012-04-01 10 views
27

Al probar una respuesta JSON de una prueba del controlador RSPEC con JBuilder de DHH, mi response.body es siempre "{}". Funciona bien en los modos de desarrollo/producción Y cuando uso el método to_json en lugar de jbuilder, obtengo el JSON correcto en mi response.body.JBuilder no recoger su cuerpo de la respuesta en JSON al probar RSPEC

Alguien tiene una idea de por qué mi response.body siempre sería "{}" al probar?

----- depurador

que "debe devolver los artículos de la compra a través de JSON",: hacer foco

get: índice, Formato =>: JSON
final

(RDB: 1) response.body

"{}"

Respuesta

55

Para cualquier persona que está teniendo el mismo problema. Lo he descubierto.

Debe llamar render_views dentro de las pruebas del controlador que está haciendo. Si lo hace, a continuación, debería ver un response.body con su JSON contenían :)

+0

debe llamar 'render_views' porque cuando la ejecución de controladores, la representación de vista es desactivada de forma predeterminada. Esto acelera la ejecución de la prueba ya que solo debe probar el comportamiento del controlador en una prueba de controlador. –

+2

cómo usar 'render_views', ref: https://www.relishapp.com/rspec/rspec-rails/v/3-5/docs/controller-specs/render-views –

+0

https://github.com/ rspec/rspec-rails > Nota: Para fomentar más pruebas aisladas, las vistas no se representan por defecto en las especificaciones del controlador. Si está verificando lógica de vista discreta, use una vista especificada. Si está verificando el comportamiento de un controlador y ve juntos, considere una especificación de solicitud. Puede usar 'render_views' si debe verificar el contenido de la vista renderizada dentro de una especificación del controlador, pero esto no es recomendable. –

25

Se podría encontrar una solución a partir de https://github.com/rails/jbuilder/issues/32

Así que en rspec/spec_helper.rb

RSpec.configure do |config| 
    # https://github.com/rails/jbuilder/issues/32 
    config.render_views = true 
end 

Después opción anterior son añadido, resultado JSON mostrará a través de procesador de JBuilder

Cuestiones relacionadas