L'utilizzo di mock nel modo seguente è una cattiva idea:
- test di scrittura in cui i mock si aspettano determinate chiamate dall'oggetto sottoposto a test
- O anche solo scrivendo mock che restituiscono valori all'oggetto sotto test se / quando richiesto
Motivo dei miei dubbi: lega il SUT a un'implementazione, poiché i test dovrebbero cambiare quando l'implementazione del SUT cambia, anche se il suo comportamento richiesto è lo stesso.
Vedo un'alternativa: basta passare al SUT gli attuali oggetti collaborativi con cui lavorerà. Così come le modifiche delle implementazioni di entrambi, i test avranno bisogno di meno modifiche e saranno comunque validi.
Naturalmente ci saranno dei momenti in cui testare un oggetto in modo approfondito, ha bisogno di essere alimentato con informazioni forzate dagli oggetti da cui dipende, nel qual caso i framework di simulazione potrebbero avere senso, ma spesso potrebbe essere eccessivo rispetto alla scrittura di oggetti di prova che estendono un'interfaccia comune con quei collaboratori.
Mi manca un vantaggio nell'usare i mock ? Il mio ragionamento sopra è corretto, o dovrei usare i mock nelle situazioni di cui sopra per un motivo che non ho capito?