J'ai un formulaire distant, qui désactive le bouton d'envoi pendant que la requête AJAX est en cours. J'aimerais vérifier que si j'insiste pour cliquer sur le bouton, aucune autre requête AJAX ne sera effectuée. Comment puis-je vérifier cela dans un test d'intégration ?
Réponses
Trop de publicités?Vous pouvez vérifier les appels ajax actifs avec jquery
$.active
Si vous utilisez capybara pour les tests d'intégration
page.evaluate_script('$.active').should be <= 1
pourrait être une solution.
Comme vous ne savez probablement pas quand les appels se produisent une fonction d'aide peut faire l'affaire
def test_until(seconds=5)
start_time = Time.now
while (Time.now - start_time) <= seconds do
yield
sleep 0.05
end
end
qui peut être appelé comme ceci
test_until do
page.evaluate_script('$.active').should be <= 1
end
Ainsi, vous testez pendant 5 secondes s'il y a plus d'un appel ajax actif.
Conserver une variable globale ou statique. Incrémentez la variable dans la fonction appelée par Ajax et vérifiez quelle sera la valeur de votre variable. Elle ne devrait jamais dépasser un, garantissant que l'appel Ajax n'est fait qu'une seule fois.
Si vous faites des tests automatisés, cela vous donne plus d'informations sur la vérification du nombre d'appels ajax actifs et d'autres choses.
http://hedleyproctor.com/2012/07/effective-selenium-testing/
J'espère que cela vous aidera. Merci.