Je n'ai pas testé deux services Web SOAP. Quels types de tests puis-je exécuter?Comment tester Webservices avec PHPUnit?
Répondre
Le test d'un service web SOAP sera tout à fait identique au test d'une méthode "locale": vous devrez appeler cette méthode, lui passer certains paramètres, et chechink la valeur de retour, pour vérifier qu'elle correspond à la paramètres que vous avez donnés.
Bien sûr, avec les services Web, l'appel sera un peu plus compliqué, car vous devrez travailler avec SoapClient
pour appeler la méthode, mais l'idée sera toujours la même.
Les plus gros problèmes que je vois sont:
- appels de services Web sont lents (ils vont bien un réseau), ce qui signifie que vos tests prendront du temps pour exécuter - ce qui signifie que vous ne serez pas capable de les exécuter aussi souvent
- Avec un service web, vous avez potentiellement plus d'une raison possible pour l'échec; ce qui signifie que vous aurez plus de mal à trouver pourquoi un test a échoué:
- Il peut échouer parce qu'il ya un bug - qui est le cas idéal
- Mais il peut aussi échouer parce que le serveur distant est en baisse
- Ou parce que le réseau est en baisse
- et sans doute pas mal d'autres raisons possile
- Bien sûr, comme le code sera exécuté sur un serveur distant, et non sur la machine qui fonctionne PHPUnit, ce sera beaucoup plus difficile d'obtenir une couverture de code (par exemple)
Merci, bonnes idées! – powtac
Il est de loin préférable de tester les classes de consommation locales se moque du SoapClient qui retournent XML résultat préenregistrée, puisque sont destinés tests unitaires pour courir vite et être indépendant de distance prestations de service.
- Créer une classe Mock de votre classe Client (vous devez avoir une enveloppe d'objet pour la SoapClient pour pouvoir le tester à fond)
- Utilisez
$this->returnValue()
pour retourner des réponses XML pré-enregistrés ou en-têtes que votre système attend
Voir: http://www.phpunit.de/manual/current/en/test-doubles.html
Si votre système dépend de la disponibilité de ces services à distance, vous pourriez mettre en œuvre un service de surveillance qui vérifie si la ressource est disponible, mais est pas quelque chose qui devrait être fait dans les tests unitaires eux-mêmes.
Cordialement, Thomas
Cool, merci! Semble raisonnable. – powtac
Je trouve http://www.versioneye.com/package/fakeweb est
FakeWeb est une aide pour truquer les requêtes Web en Ruby. Cela fonctionne au niveau global , sans modifier le code ou écrire des talons étendus.
- 1. Comment tester les tableaux internes avec phpunit
- 2. Comment tester un Zend_Form personnalisé avec PHPUnit?
- 3. comment tester mail() en utilisant PHPUnit
- 4. Utiliser PHPUnit pour tester les cookies et les sessions, comment?
- 5. Comment tester un second paramètre dans un objet simulé PHPUnit
- 6. comment tester l'analyse syntaxique de la méthode PUT PHPUnit
- 7. Comment travailler avec des constructions dans PHPUnit?
- 8. PHPUnit - tester les méthodes d'inclusion de fichier (include, require, require_once)
- 9. Exception non testée avec phpUnit?
- 10. PHPUnit: Tester une classe abstraite sans méthodes concrètes
- 11. Comment retourner des objets personnalisés avec WebServices
- 12. Erreur PHPUnit avec AddDirectoryToFilter
- 13. Test des classes statiques avec PHPUnit
- 14. Test de multiples exceptions avec PHPUnit
- 15. Comment configurer et utiliser PHPunit avec Hudson?
- 16. Comment intégrer phpunit avec Hudson CI?
- 17. Test de plusieurs classes avec PHPUnit
- 18. Comment configurer l'utilisation webservices
- 19. connexion webservices PHP avec Android
- 20. Utilisation de dictionnaires avec WebServices
- 21. EJB 3 | Entités avec webservices
- 22. Comment configurer hudson CI avec PHPunit et comment lancer phpunit en utilisant hudson?
- 23. Comment puis-je tester si la même méthode est appelée avec les paramètres corrects avec PHPUnit et objet mock
- 24. Test d'unité Objets Doctrine avec PHPUnit
- 25. PhpUnit avec Zend Framework problème de mémoire
- 26. erreur Webservices pour dev.virtualearth.net/webservices/geocode
- 27. Constantes globales dans PHPUnit
- 28. Comment faire plusieurs tests en utilisant MDB2 avec PHPUnit DataBase?
- 29. Webservices Help
- 30. PHPUnit: Test d'une classe d'usine avec une dépendance
Stubbing et Mocking Web Services http://www.phpunit.de/manual/current/en/test-doubles.html –
Merci. Mais je cherchais des fonctionnalités pour tester le webservice lui-même et non le code PHP correspondant. – powtac
alors vous devez implémenter ces webservices en PHP et appeler ces fonctions d'implémentation. –