Скажем, у меня есть класс, который выглядит следующим образом:
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 для зависимости, которую я получаю Мне не нужна особая функциональность, которую я хочу проверить.
Это кажется мне неприятным запахом, но сама причина, по которой я иду по этому пути, заключается в том, что я обнаружил, что создаю новые классы для каждой части новой функциональности, которую я представлял. Это тоже казалось плохой вещью, и поэтому я начал пытаться объединить похожие функции.
Мой вопрос: должны ли все зависимости класса использоваться всеми его функциональными возможностями, т. Е. Если разные части функциональности используют разные зависимости, это признак того, что они, вероятно, должны жить в отдельных классах?