Rozumiem ten wzorzec projektowy i potrafię go zastosować do pojedynczej klasy, mam problem w jaki sposób go wykorzystać w bardziej złożonych projektach.
Mam hierarchie wielu klas w projekcie, ostatnia klasa odpowiada za zapis do pliku lub komunikację sieciową. Łatwo sobie przygotowuje mocka dla klasy nadrzędnej i omijam kosztowne operacje IO. Pytanie jak to mockować od pierwszej klasy? Bo mało eleganckie w złożonym projekcie trzymać wszystkie zależności w pierwszej klasie, aby budować obiekty w dół.
W jaki sposób Wy to robicie w swoich projektach?
A(main)
B <- chce napisać unit testy dla B, ale nie chce robić operacji IO na prawdziwym sprzęcie
C
..
D
E (mock_f) -> mock_f->write
F <- jakieś operacje IO