Connaissez vous la nuance entre un mock et un stub?
Mieux: êtes vous conscient que l'utilisation de l'un ou de l'autre influe sur votre style de code?
Alors découvrez ce talk pour mieux savoir quel genre de testeur vous êtes!
4. Vocabulaire
• Test Double : objet étant utilisé à la place d’un autre dans le but de
tester
• Dummy : est passé en paramètre mais jamais effectivement utilisé
• Fake : a une implémentation fonctionnelle simplifiée pour les tests,
qui ne conviendra pas en production (base de données de tests en
mémoire par exemple)
• Stubs : fourni des réponses prédictibles aux appels durant le test. Ce
qui n’est pas testé ne sera pas implémenté. Un stub peut également
enregistrer des informations tel que la liste des messages envoyés
pour un messager.
• Mocks : est un objet préprogrammé avec des attentes sur les appels
qu’il est censé recevoir
7. Mock
Stub
Initialisation
Simple et
indépendante
Complexe si objet de
haut niveau
Isolation
Bug = 1 seul test
rouge
Bug = plusieurs tests
rouges
Couplage
Fortement couplé à
l’implémentation
Faiblement couplé à
l’implémentation
Design (TDD)
Méthodes qui
agissent sur un objet
Méthodes qui
retournent des valeurs
POO
« Tell don’t Ask »,
Demeter
Parfois retourne valeur
seulement pour test
8. Mock
BDD = TDD avec mocks
Mock => Comportement => Behaviour Driven Development
10. CQRS
• Mocks for commands
• Stubs for queries
Mark Seeman
=>Valider une Query avec un Mock est compliqué!
http://blog.ploeh.dk/2013/10/23/mocks-for-commands-stubs-for-queries/