Không , tiêm phụ thuộc là không cần thiết cho thử nghiệm đơn vị.
Việc tiêm phụ thuộc sẽ giúp nếu bạn có một lớp cần một thể hiện của lớp phụ thuộc để thực hiện một số xử lý phụ. Thay vì DI, bạn có thể tách logic của phương thức kinh doanh thành phần lấy dữ liệu (không phải là đơn vị kiểm tra được) và phần tính toán có thể được kiểm tra đơn vị.
Ví dụ (sử dụng DI) Việc triển khai này phụ thuộc vào Nhân viên, Tài khoản, ...
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;
...
}
Sau khi thu thập dữ liệu và tính toán:
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
...
}
Phần tính toán có thể được kiểm tra dễ dàng mà không cần tiêm phụ thuộc.