A volte gli oggetti devono solo essere strettamente accoppiati. Ad esempio, una classe CsvFile
dovrà probabilmente lavorare strettamente con la classe CsvRecord
(o l'interfaccia ICsvRecord
).
Tuttavia, da quanto ho appreso in passato, uno dei principi fondamentali dello sviluppo basato su test è "Non testare più di una classe alla volta". Significa che dovresti usare ICsvRecord
mock o stub piuttosto che istanze effettive di CsvRecord
.
Tuttavia, dopo aver provato questo approccio, ho notato che prendere in giro la classe CsvRecord
può diventare un po 'peloso. Il che mi porta a una delle due conclusioni:
- È difficile scrivere test unitari! Questo è un odore di codice! Refactoring!
- Prendere in giro ogni singola dipendenza è irragionevole.
Quando ho sostituito i miei mock con istanze CsvRecord
effettive, le cose sono andate molto più agevolmente. Guardando in giro per i pensieri di altre persone mi sono imbattuto in questo post del blog , che sembra supportare il n. 2 sopra. Per gli oggetti che sono naturalmente strettamente accoppiati, non dovremmo preoccuparci così tanto di prendere in giro.
Sto andando fuori pista? Ci sono degli svantaggi dell'assunzione n. 2 sopra? Dovrei davvero pensare al refactoring del mio design?