Я читал о том, как написать тестируемый код и наткнулся на шаблон проектирования зависимостей.Включение зависимостей дальше по «цепочке»
Этот шаблон дизайна очень прост для понимания, и для него нет ничего, объект запрашивает значения, а не создает их сам.
Однако теперь, когда я думаю о том, как это можно использовать, приложение im currenty working on я понимаю, что есть некоторые сложности для него. Представьте себе следующий пример:
public class A{
public string getValue(){
return "abc";
}
}
public class B{
private A a;
public B(A a){
this.a=a;
}
public void someMethod(){
String str = a.getValue();
}
}
Модульное тестирование someMethod()
теперь будет легко, так как я могу создать макет из A и имеют getValue()
возвращение все, что я хочу.
Зависимость класса B от A вводится через конструктор, но это означает, что A должен быть создан вне класса B, поэтому эта зависимость переместилась в другой класс. Это будет повторяться много слоев вниз, и в какой-то момент нужно создать экземпляр.
Теперь на вопрос, верно ли, что при использовании Injection Dependency вы продолжаете передавать зависимости через все эти слои? Разве это не сделает код менее читаемым и потребует много времени для отладки? И когда вы достигнете «верхнего» слоя, как вы можете тестировать этот класс?
Это не инъекция зависимости. Вы должны создать интерфейс, после выполнения его реализации и вместо частного A a в своем классе b использовать private IA ia, затем передать объект-конструктор A и присвоить его переменной ia –