3 votes

Tests unitaires et fixtures

Nous avons un tas de tests unitaires qui testent un grand nombre de pages web et de services API REST.

Actuellement, lorsque nos tests sont exécutés, ils sont tirés de ces pages en direct, mais cela peut prendre du temps à s'exécuter parfois, et il semble également que les tests devraient tester plus de notre code - et non pas seulement compter sur le fait qu'ils sont en place et répondent (si cela a un sens ).

Est-il préférable de sauvegarder une réponse api valide et de la charger dans les tests unitaires lors de la configuration ?

Qu'en pensez-vous ?

4voto

Axelle Ziegler Points 1903

Il semble que vous essayez de tester trop de choses à la fois, oui.

Vous devez tester le code générant la réponse pour l'API de restauration (si ce code est sous votre contrôle) et le code l'utilisant de manière complètement séparée. Si vous ne contrôlez pas le code générant l'API, vous devez alimenter le code l'utilisant avec de fausses réponses API valides et les utiliser pour vos tests.

Le fait de se fier aux pages qui sont en place et qui répondent ressemble beaucoup plus à un test d'intégration. Si vous vous appuyez sur une API externe, il est toujours intéressant d'avoir un test d'intégration pour valider que l'API se comporte toujours comme vous l'attendez, cependant.

0voto

Kjetil Watnedal Points 2917

Je préfère de loin utiliser une source de données de test/mock plutôt que la source réelle. Cela vous permettra de lire les données sans utiliser les ressources du réseau et d'obtenir de meilleures performances (selon votre architecture, il peut être facile ou non de changer les sources de données que vous utilisez).

Mais il est tout aussi important que vous puissiez jouer avec les données que vous renvoyez, et que vous puissiez tester les cas limites, les réponses aux données invalides, etc. En fonction de ce que votre application fait avec les données, cela peut être important.

0voto

RationalGeek Points 3033

La façon dont je gérerais cela est d'utiliser le mocking. Supposons que vous avez une classe qui est responsable de l'appel des services externes, et une classe distincte qui utilise ces résultats. Vous pouvez créer un simulacre de la classe qui appelle les services, et renvoyer n'importe quel résultat particulier que vous voulez. Ensuite, vous pouvez tester la classe qui a besoin des résultats sans avoir à gérer les appels externes.

http://en.wikipedia.org/wiki/Mock_object
http://martinfowler.com/articles/mocksArentStubs.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X