78 votes

Comment tester le résultat JSON à partir des tests fonctionnels de Ruby on Rails?

Comment puis-je affirmer ma demande Ajax et tester la sortie JSON des tests fonctionnels de Ruby on Rails?

98voto

nicholaides Points 7859

Utilisez le fichier JSON.parse de la gemme JSON , qui prend une chaîne en tant qu'entrée et renvoie un hachage Ruby que représente le JSON.

Voici l'essentiel de base pour un test:

 user = JSON.parse(@response.body)
assert_equal "Mike", user['name']
 

Voici la documentation pour le joyau: http://json.rubyforge.org/ . En outre, vous pouvez jouer assez facilement avec la gemme JSON dans IRB .

90voto

Josh Points 2733

Rails a un support JSON intégré dans:

 def json_response
    ActiveSupport::JSON.decode @response.body
end
 

Pas besoin de plugin

Ensuite, vous pouvez faire quelque chose comme ça:

 assert_equal "Mike", json_response['name']
 

7voto

acw Points 772

Si vous utilisez RSpec, json_spec vaut le détour

https://github.com/collectiveidea/json_spec

4voto

Eric Points 29

De même, pour les réponses JSON courtes, vous pouvez simplement faire correspondre une chaîne de caractères JSON à @ response.body. Cela évite d'avoir à compter sur un autre joyau.

 assert_equal '{"total_votes":1}', @response.body
 

1voto

delba Points 4463

En réalité, vous pouvez utiliser implicitement le module JSON:

 assert_equal assigns(:user).to_json, @response.body
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X