Souvent, je me trouve à vouloir écrire un test unitaire pour une partie du code qui accède aux ressources HTTP dans le cadre de sa fonction normale. Avez-vous trouvé de bons moyens d'écrire ce genre de tests?Bonnes manières de tester une unité qui communique via HTTP
Répondre
Extrayez la partie qui accède aux ressources HTTP à partir de votre code principal. Créez une interface pour ce nouveau composant. Dans votre test, simulez l'interface et renvoyez des données que vous pouvez contrôler de manière fiable.
Vous pouvez tester l'accès HTTP en tant que test d'intégration.
C'est typiquement une fonction que je mockerais dehors pour les essais ... Je n'aime pas mes tests dépendant de quelque chose d'extérieur ... encore pire si c'est une ressource externe sur laquelle je n'ai aucun contrôle (tel qu'un Site Web de tiers).
Les bases de données sont l'une des rares ressources externes que je ne vais souvent pas mocker ... J'utilise plutôt DBUnit.
J'ai récemment dû écrire un composant qui accédait à un wiki et faisait un peu de texte basique. La majorité des tests que j'ai écrits ont validé le bon code de réponse HTTP. En ce qui concerne la validation de la ressource réelle, je voudrais enregistrer une version hors connexion d'une ressource connue et vérifier que l'algorithme collecte/traite les données correctes.
Selon la langue ou le framework que vous utilisez, il peut être simple de démarrer un serveur HTTP exécutant localement les ressources que vous souhaitez.
- 1. Comment tester une unité .NET ConfigurationSection manquant
- 2. Comment tester une unité qui insère un enregistrement dans une base de données RIA Services?
- 3. Comment tester User Control avec une unité qui repose sur l'objet Session
- 4. Comment allez-vous tester une unité contenant un type de données de table de hachage?
- 5. Comment tester une unité de recherche de texte intégral dans ASP.NET MVC
- 6. DesktopApp communique avec WebApp
- 7. Unité test d'un constructeur Java qui quitte l'application
- 8. Comment une unité peut-elle tester des sections de code procédurales ou événementielles?
- 9. Unité testant une méthode appelée lors de l'initialisation?
- 10. Téléchargement de fichiers via un HTTP POST en C++
- 11. De bonnes applications asp.net (C#)?
- 12. POSTing des pièces jointes via HTTP via l'API JSON
- 13. WCF communique avec l'application d'hébergement?
- 14. Obtenir une révision spécifique via http avec VisualSVN Server
- 15. Bonnes pratiques pour envoyer des mails depuis PHP via smtp?
- 16. Unité test RoleProvider personnalisé avec Moq?
- 17. tester des applications python qui utilisent mysql
- 18. Comment tester l'application ASP.NET qui dépend de l'adresse IP
- 19. Différentes manières de supprimer des listes
- 20. Envoyer un message XML via HTTP Publier sur l'IP: Port
- 21. Comptage des octets envoyés/reçus via HTTP
- 22. Unité de test des gestionnaires d'événements Flex
- 23. Connaissez-vous une ressource qui répertorie toutes les familles de polices avec leurs retombées qui sont bonnes sur le web?
- 24. Comment appstore, tester des applications qui communiquent avec des serveurs locaux
- 25. Comment puis-je tester un code qui utilise une interface Fluent?
- 26. De quelles manières pouvez-vous écrire ceci?
- 27. Téléchargement de contenu compressé via HTTP à l'aide de Python
- 28. Comment tester un HTTP-Post avec Moq dans ASP.NET?
- 29. unité test d'un écran openGl
- 30. Alternative à Response.TransmitFile pour le transfert de fichiers via HTTP
Autre chose: si vous utilisez une bibliothèque ou une structure HTTP, il y a de bonnes chances qu'elle fonctionne déjà. Vous n'avez pas vraiment besoin de tester la bibliothèque. Vous avez seulement besoin de tester les bits de votre code qui envoie/reçoit les données. – jop