Skip to main content

Test Doubles

Test Doubles

Test Doubles

Si vous écrivez des tests, vous devriez connaître le terme « Mock » mais saviez-vous qu'il était la plupart du temps mal utilisé ? 🤔

Dans le langage courant, un « Mock » permet de remplacer les dépendances d'un composant ou d'une unité pour pouvoir le/la tester de façon indépendante et isolée.

👉 Le terme « mock » est utilisé par abus de langage, nous devrions plutôt parler de « Test Double ».

❓ Qu'est-ce qu'un « Test Double » ?

Les test doubles sont utilisés pour isoler le code que nous testons ou souhaitons analyser. Ce sont des objets qui miment les objets réels.

Voici les 5 types listés par Gerard Meszaros dans son ouvrage "XUnit Test Patterns: Refactoring Test Code" :

➤ Dummy

Circulent mais ne sont jamais réellement utilisés. Habituellement, ils sont simplement utilisés pour remplir des listes de paramètres.

➤ Fake

Sont des implémentations fonctionnelles, mais prennent généralement un raccourci qui les rend non adaptés à la production (une InMemoryTestDatabase est un bon exemple).

➤ Stubs

Fournissent des réponses prédéfinies aux appels passés pendant le test, ne répondant généralement pas du tout à quoi que ce soit en dehors de ce qui est programmé pour le test.

➤ Spies

Ce sont des stubs qui enregistrent également certaines informations en fonction de la façon dont ils ont été appelés. Par exemple, un service de messagerie qui enregistre le nombre de messages envoyés.

➤ Mocks

Sont préprogrammées avec des attentes qui forment une spécification des appels qu'elles sont censées recevoir. Ils peuvent lever une exception s'ils reçoivent un appel auquel ils ne s'attendent pas et sont vérifiés lors de la vérification pour s'assurer qu'ils ont reçu tous les appels qu'ils attendaient.

Sources

Test Doubles — Fakes, Mocks and Stubs
https://blog.pragmatists.com/test-doubles-fakes-mocks-and-stubs-1a7491dfa3da

Test Double
http://xunitpatterns.com/Test%20Double.html

Tags