Ні , введення залежності не є істотним для одиничного тестування.
Ін'єкція залежності допомагає, якщо у вас є клас, який потребує залежного екземпляра класу, щоб зробити деяку під-обробку. Замість DI ви можете розділити логіку бізнес-методу на частину отримання даних (яка не перевіряється одиницею) та частину обчислення, яка може бути перевірена одиницею.
Приклад (за допомогою DI) Ця реалізація залежить від співробітника, облікового запису, ...
bool hasPermissionToTransferMoney(Employee employee, Account from, Account to, Money amount)
{
if (amount > 100 && employee.isStudent())
return false;
if (to.getOwner().getFamiliyName() == employee.getFamilyName() && ...
return false; // cannot transfer money to himself;
...
}
Після відокремлення збору даних та обчислення:
bool hasPermissionToTransferMoney(Employee employee, Account from, Account to, Money amount)
{
return hasPermissionToTransferMoney(employee.isStudent(), employee.getFamilyName(), to.getOwner().getFamilyName(), ...);
}
// the actual permission calculation
static bool hasPermissionToTransferMoney(boolean isStudent, string employeeFamilyName, string receiverFamilyName, ...)
if (amount > 100 && isStudent)
return false;
if (receiverFamilyName == employeeFamiliyName && ...
return false; // cannot transfer money to himself
...
}
Розрахункову частину можна легко перевірити без введення залежності.