Parfois, les objets doivent simplement être étroitement couplés. Par exemple, une CsvFile
classe devra probablement travailler étroitement avec la CsvRecord
classe (ou l' ICsvRecord
interface).
Cependant, d'après ce que j'ai appris dans le passé, l'un des principes fondamentaux du développement piloté par les tests est «Ne testez jamais plus d'une classe à la fois». Cela signifie que vous devez utiliser des ICsvRecord
faux ou des talons plutôt que des instances réelles de CsvRecord
.
Cependant, après avoir essayé cette approche, j'ai remarqué que se moquer de la CsvRecord
classe peut devenir un peu velu. Ce qui m'amène à l'une des deux conclusions:
- Il est difficile d'écrire des tests unitaires! C'est une odeur de code! Refactor!
- Se moquer de chaque dépendance est tout simplement déraisonnable.
Lorsque j'ai remplacé mes simulacres par des CsvRecord
instances réelles , les choses se sont beaucoup mieux déroulées. En cherchant les pensées des autres, je suis tombé sur ce billet de blog , qui semble soutenir le n ° 2 ci-dessus. Pour les objets qui sont naturellement étroitement couplés, nous ne devrions pas nous soucier autant de la moquerie.
Suis-je loin de la piste? Y a-t-il des inconvénients à l'hypothèse n ° 2 ci-dessus? Dois-je réellement penser à refactoriser mon design?