mocking
DESCRIPTION
Presentation about mock objectsTRANSCRIPT
mocking
Emanuele DelBono [email protected]://blog.codiceplastico.com
Agenda
Perchè?
Se uno unit test è rosso l’errore è sicuramente nell’unità sotto test
Definizioni
• State Based Testing: verifica che un unità funzioni correttamente verificandone lo stato dopo l’esecuzione
• Interaction Testing: verifica che l’unità sotto test effettui correttamente le chiamate verso gli altri oggetti con cui collabora
Cosa sono?• Sono finti oggetti che ci aiutano in vari modi a
testare le nostre unità.
• Si chiamano simpaticamente:
Dummy, Fake, Stub, Spy, Mock=
Test Doubles
Utili perchè?
• Ci permettono di:– rimanere focalizzati sul metodo che stiamo
disegnando– scrivere unit test anche su oggetti che collaborano
con altri– scrivere test di interazione tra diversi oggetti– posticipare l’implementazione di alcuni
collaboratori
Esempio
(WheatherStatistics)
Ma hai presente quanto codice hai scritto?
• Ci sono alcuni framework che aiutano:– RhinoMocks– Moq– TypeMock– Nmock– Nmock2– .NET Mock
Ri-Esempio
(WheatherStatistics)
Le 3 fasi dell’apprendimento
1. WTF !? **%*!!2. I got the power! Posso mockare il mondo!3. Lo zen e l’arte del Mockare quanto basta
Alcune (buone) regole
• Non verificare i dettagli della collaborazione• Se puoi usa uno stub invece di un mock• Non mockare grosse interfacce• Mocka solo i tuoi diretti collaboratori• Usa un solo mock per il test• Non mockare i dati di ritorno
E i test di integrazione?
I mock object permettono di scrivere test unitari, ma...
...anche i test di integrazione sono importanti.
Grazie
• Riferimenti:– Growing object oriented software – Freeman,
Pryce – Addison Wesley– http://xunitpatterns.com/– http://www.mockobjects.com/