Comment faire attendre Behat pour un appel AJAX?
Scénario: Modifier et enregistrer un incomplètes changement à une Campagne
Given I click on the Campaign section folder
And I press Save in the selected Campaign
Then I should see an error balloon informing the changes cannot be saved
Point est que cette erreur "ballon" dans l'étape finale est un appel ajax qui va alors apporter un vert ou rouge ballon en fonction de la réussite de l'opération. Actuellement ce que je fais, c'est après
"Et j'appuie sur Enregistrer..." je vais faire un sleep(3) afin de lui donner le temps pour ce ballon. Cela ne semble pas très intelligent coz vous perdez du temps et aussi parce que certaines fois, il peut prendre plus ou moins de temps pour cet appel à être traitées.
Comment faites-vous pour faire de votre behat tests attendre Ajax faire faire au lieu de simplement mettre les bêtes de dormir?
merci beaucoup pour tous vos commentaires!
source d'informationauteur Murilo Gimenes Lessa
Vous devez vous connecter pour publier un commentaire.
Ceci est fait en attente pour les appels ajax pour frapper 0. jQuery.actif, vérifiez juste que pour vous.
Dans votre FeatureContext.php, vous pouvez faire quelque chose comme;
Et assurez-vous que vous utilisez une Vison Pilote qui s'exécute du javascript et ajax (par défaut).
Je le fais en attente pour les DOM à la suite du changement de l'Appel Ajax. J'ai fait une sous-classe de DocumentElement, en l'appelant AsyncDocumentElement et en remplaçant la méthode findAll:
Puis dans \Behat\Vison\Session, j'ai changé le constructeur pour l'utilisation de cette classe.
Une fois que je l'ai fait, j'ai trouvé mon AngularJS tests étaient de travail. Jusqu'à présent, je ne l'ai testé dans Firefox.
Dans le cas où vous utilisez Prototypejs (e.g Magento), l'équivalent de code est: