Скажем, у меня есть класс, который выглядит следующим образом:
internal class SomeClass
{
IDependency _someDependency;
...
internal string SomeFunctionality_MakesUseofIDependency()
{
...
}
}
И затем я хочу добавить функциональность, которая связана, но использует другую зависимость для достижения своей цели. Возможно, что-то вроде следующего:
internal class SomeClass
{
IDependency _someDependency;
IDependency2 _someDependency2;
...
internal string SomeFunctionality_MakesUseofIDependency()
{
...
}
internal string OtherFunctionality_MakesUseOfIDependency2()
{
...
}
}
Когда я пишу модульные тесты для этой новой функциональности (или обновляю модульные тесты, которые у меня есть для существующей функциональности), я обнаружил, что создаю новый экземпляр SomeClass (SUT), в то время как я передал null для зависимости, которую я надел "Мне нужно определенное количество функциональных возможностей, которые я ищу для тестирования.
Мне кажется, что это плохой запах, но сама причина, по которой я нахожусь на этом пути, заключается в том, что я создал себе новые классы для каждой новой функциональности, которую я представлял. Это тоже показалось мне плохой, и поэтому я начал собирать аналогичную функциональность вместе.
Мой вопрос: должны ли все зависимости класса потребляться всеми его функциональными возможностями, то есть, если разные биты функциональности используют разные зависимости, это ключ к тому, что они, вероятно, должны жить в отдельных классах?