Say Mam klasy, który wygląda tak:Zasada pojedynczej odpowiedzialności: czy wszystkie metody publiczne w klasie muszą używać wszystkich zależności klasowych?
internal class SomeClass
{
IDependency _someDependency;
...
internal string SomeFunctionality_MakesUseofIDependency()
{
...
}
}
A potem chcę dodać funkcjonalność, która jest związana ale sprawia wykorzystywania innego uzależnienia, aby osiągnąć swój cel. Być może coś jak poniżej:
internal class SomeClass
{
IDependency _someDependency;
IDependency2 _someDependency2;
...
internal string SomeFunctionality_MakesUseofIDependency()
{
...
}
internal string OtherFunctionality_MakesUseOfIDependency2()
{
...
}
}
Kiedy pisać testy jednostkowe dla tej nowej funkcjonalności (lub zaktualizować testy jednostkowe, które mam do istniejącej funkcjonalności), znajdę się tworząc nową instancję SomeClass (w SUT) podczas przekazywania wartości null dla zależności, której nie potrzebuję dla określonego fragmentu funkcjonalności, który zamierzam przetestować.
To wydaje mi się nieprzyjemnym zapachem, ale powodem, dla którego znalazłem się na tej ścieżce, jest to, że stworzyłem nowe zajęcia dla każdej nowej funkcjonalności, którą wprowadziłem. To też wydawało się złe, więc zacząłem próbować grupować podobne funkcje.
Moje pytanie: czy wszystkie zależności danej klasy powinny być zużywane przez całą jej funkcjonalność, np. Jeśli różne bity funkcji używają różnych zależności, jest to wskazówka, że powinny one prawdopodobnie żyć w osobnych klasach?
Rozwiązuje to mój problem, ponieważ zależności nie mają pojęcia o stanie, ale raczej są enkapsulującymi funkcjonalnościami (powinienem wspomnieć o tym w moim pytaniu - ale nie rozważał tego w tym czasie) – jpoh