Je cherche un moyen propre d'utiliser JBuilder et tester la sortie json avec RSpec. Le moyen le plus répandu pour tester JSON est d'implémenter la méthode as_json, puis de comparer l'objet reçu avec la méthode object.to_json dans RSpec. Mais une grande raison pour laquelle j'utilise JBuilder est que je ne veux pas tous les attributs que to_json recrache; donc cela casse la comparaison.Comment utiliser RSpec avec JBuilder?
Actuellement avec JBuilder Je vais avoir à faire ce qui suit pour tester les résultats RSpec:
1) Créer un objet usine: @venue
2) Créer un hachage à l'intérieur de mon test RSpec qui contient la "attendu" string JSON retour
@expected => {:id => @venue.id,:name=>@venue.name..........}
2) Comparer la chaîne @expected à la results.response.body qui est renvoyée par l'appel JSON.
Cela semble simple, sauf que j'ai des objets rendus avec plus de 15 attributs, et la construction de la chaîne de hachage @expected est lourde et très fragile. Y a-t-il une meilleure manière de faire cela?
Je fais exactement cela. Je ne peux pas penser à une meilleure façon de le faire. J'ai construit un hachage et j'applique '.to_json' sur' @ expected'. Une chose que j'accélère et que je rends moins cassante. Peut-être au prix de l'exactitude? Est de construire mes hachages avec recueillir et carte. Je suppose que la nature spécifique de la construction de modèle personnalisé avec une bibliothèque de construction de chaînes JSON vous oblige à écrire un test qui correspond aux spécificités du travail que vous faites ..:/ – stuartc
@beeudoublez êtes-vous capable d'utiliser RSpec pour tester les vues jbuilder? J'ai du mal à faire passer des objets à la vue par rspec pour que le gestionnaire jbuilder puisse construire le JSON. Avez-vous un exemple de fichier '* _spec.rb' de vue de travail? – sorens