Estoy buscando una forma limpia de usar JBuilder y probar la salida json con RSpec. La forma más común para las pruebas JSON es implementar el método as_json, y luego en RSpec comparar el objeto recibido con el método object.to_json. Pero una gran razón por la que estoy usando JBuilder es que no quiero todos los atributos que to_json escupe; entonces esto rompe la comparación.¿Cómo usar RSpec con JBuilder?
Actualmente con JBuilder estoy tener que hacer lo siguiente para probar los resultados RSpec:
1) Crear un objeto de fábrica: @venue
2) Crear un hash dentro de mi prueba RSpec que contiene el "espera" cadena JSON
@expected => {:id => @venue.id,:name=>@venue.name..........}
2) Comparar la cadena @expected a la results.response.body que se devuelve desde la llamada JSON.
Esto parece simple, excepto que tengo objetos renderizados con más de 15 atributos, y construir la cadena de hash @expected es engorroso y muy frágil. ¿Hay una mejor manera de hacer esto?
He estado haciendo exactamente eso. No puedo pensar en una mejor manera de hacerlo. Construí un hash y aplico '.to_json' en el' @ expected'. Una cosa que hago es acelerar esto y hacerlo menos quebradizo. ¿Tal vez a costa de la precisión? Es construir mis valores hash con recolección y mapa. Supongo que la naturaleza específica de crear una plantilla personalizada con cualquier biblioteca de construcción de cadenas JSON requiere que escriba una prueba que coincida con los detalles del trabajo que realiza ...:/ – stuartc
@beeudoublez ¿puede usar RSpec para probar las vistas de jbuilder? Tengo problemas para conseguir que rspec pase objetos a la vista para que el manejador jbuilder construya el JSON. ¿Tiene un ejemplo de archivo de vista de trabajo '* _spec.rb'? – sorens