Hayır , birim enjeksiyon için bağımlılık enjeksiyonu şart değildir.
Bağımlılık enjeksiyonu, bazı alt işlemleri yapmak için bağımlı bir sınıf örneğine ihtiyaç duyan bir sınıfınız varsa yardımcı olur. DI yerine, bir iş yönteminin mantığını veri toplama kısmına (ünite test edilebilir olmayan) ve ünite test edilebilecek bir hesaplama kısmına ayırabilirsiniz.
Örnek (DI kullanarak) Bu uygulama Çalışan, Hesap, ...
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;
...
}
Veri toplama ve hesaplama işleminden sonra:
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
...
}
Hesaplama kısmı bağımlılık enjeksiyonuna gerek kalmadan kolayca test edilebilir.