Bonjour,
Mock et inversion de contrôle.
ça n'a rien à voir, c'est complémentaire, c'est concurrent ?
Merci,
Bonjour,
Mock et inversion de contrôle.
ça n'a rien à voir, c'est complémentaire, c'est concurrent ?
Merci,
c'est complémentaire ! Cela rend le code testable. L'inversion de controle, et plus particulierement l'injection de dépendances permet de poser des tests en passant des mocks.
Si je veux tester doOperation, je ne peux pas car je n'ai pas d'autre choix que d'utiliser le vrai Dao. Si j'utilise l'injection de dépendances, les tests sont plus faciles à poser car on a accès à une référence du dao.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 class MyClass { public MyClass(){ } void doOperation(){ MyDao dao = new Dao(); dao.doOperation(); } }
Le test devient posable:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 class MyClass { MyDao dao; public MyClass(MyDao dao){ this.dao = dao; } void doOperation(){ dao.doOperation(); } }
Les responsabilités sont maintenant bien découpées : MyClass s'occupe de la logique métier mais c'est l'IOC par le biais d'injection de dépendance ou de factory qui s'occupe de dessiner les graphes d'objets. Je peux mettre les mocks que je veux.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 @Test public void testDoOperation { MyClass myClass = new MyClass(mockDao); myClass.doOperation(); // assertions }
++
Foucha.
=========
"du code propre c'est du code qui fait exactement ce qu'on croit que ça fait"
Mes Articles DVP
Partager