Czasami przedmioty muszą być ściśle połączone. Na przykład CsvFile
klasa prawdopodobnie będzie musiała ściśle współpracować z CsvRecord
klasą (lub ICsvRecord
interfejsem).
Jednak z tego, czego nauczyłem się w przeszłości, jedną z głównych zasad rozwoju opartego na testach jest: „Nigdy nie testuj więcej niż jednej klasy na raz”. Oznacza to, że powinieneś używać ICsvRecord
próbnych lub kodów pośredniczących zamiast rzeczywistych instancji CsvRecord
.
Jednak po wypróbowaniu tego podejścia zauważyłem, że wyśmiewanie się z CsvRecord
klasy może być trochę owłosione. Co prowadzi mnie do jednego z dwóch wniosków:
- Trudno jest pisać testy jednostkowe! To zapach kodu! Refaktoryzacja!
- Wyśmiewanie każdej zależności jest po prostu nieuzasadnione.
Kiedy zastąpiłem moje kpiny rzeczywistymi CsvRecord
instancjami, sprawy potoczyły się znacznie sprawniej. Rozglądając się za myślami innych ludzi, natknąłem się na ten post na blogu , który wydaje się popierać nr 2 powyżej. W przypadku obiektów, które są naturalnie ściśle powiązane, nie powinniśmy się tak bardzo martwić o wyśmiewanie.
Czy jestem na dobrej drodze? Czy są jakieś wady powyższego założenia nr 2? Czy powinienem naprawdę myśleć o refaktoryzacji mojego projektu?