Czasami przedmioty muszą być ściśle połączone. Na przykład CsvFileklasa prawdopodobnie będzie musiała ściśle współpracować z CsvRecordklasą (lub ICsvRecordinterfejsem).
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ć ICsvRecordpró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 CsvRecordklasy 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 CsvRecordinstancjami, 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?