2013-06-11 2 views
0

J'utilise rspec et capybara et je voudrais tester une réponse JSON que je reçois en réponse à par exemple click_button. Je comprends que je peux utiliser: js => true mais je voudrais analyser le JSON que je reçois. Je vois que je peux faire quelque chose comme:comment interagir avec javascript réponse JSON avec rspec et capybara

get '/your/path', format: 'js' 

est-il un moyen de faire quelque chose comme:

click_button('Save', format: 'js') 
::JSON.parse(response).... 

?

thx

Répondre

3

Le but des bibliothèques elumation du navigateur comme Sélénium est d'approcher les navigateurs réels et permettre émule le comportement des utilisateurs réels. Les utilisateurs réels ne peuvent pas lire les réponses aux actions AJAX, de sorte que les bibliothèques d'émulation de navigateur ne donnent pas une telle capacité. Also it will be quiet hard for Selenium guys to implement it.

Il y a plusieurs possibilités que vous avez:

  • Ecrire ce test en utilisant l'un des http client libraries. Mais vous ne pouvez pas vraiment tester quelque chose qui implique beaucoup de Javascript et AJAX en utilisant cette méthode.
  • Il est probable que l'action AJAX change quelque chose dans le DOM de votre application. Vous pouvez facilement écrire un chèque à l'aide de Capybara.
  • Mais si vous voulez vraiment tester votre application de bout en bout et que vous voulez vérifier directement la réponse HTTP à l'action AJAX, vous devez utiliser un proxy qui enregistrera toutes les réponses. Ensuite, vous effectuez une recherche à travers ces réponses. Selenium mainteneurs conseils pour utiliser Browsermob proxy to do something like this. Here are Ruby bindings for it qui ont été rédigés par un responsable des reliures Ruby de Selenium
Questions connexes