Итак, мне интересно, как работает модульное тестирование в отношении обработки внешних зависимостей. Здесь и в других местах я знаком с инъекцией зависимостей и как это позволяет нам тестировать блок (A) кода. Однако я смущен тем, как тестировать другие единицы (B и C), которые теперь обладают внешней зависимостью, поэтому они могут вводить их в исходный блок (A).
Например, скажем, что какой-то класс Foo использует внешнюю зависимость...
class Foo
{
private ExternalDependency ed;
public int doSomethingWithExternalDependency() {...}
}
И класс Бар отключает Foo...
class Bar
{
public int doSomethingWithFoo
{
Foo f = new Foo();
int x = f.doSomethingWithExternalDependency();
// Do some more stuff ...
return result;
}
}
Теперь я знаю, что я могу использовать инъекцию зависимостей, чтобы я мог протестировать Foo, но тогда как я могу проверить Бар? Я думаю, я могу, опять же, использовать инъекцию зависимостей, но в какой-то момент какой-то блок должен фактически создать внешнюю зависимость; так как я могу проверить это устройство?