Junior — Middle
Kako inverzija zavisnosti doprinosi olakšanju procesa testiranja koda?
sobes.tech АИ
Одговор од АИ
Princip zavisnosti (Dependency Inversion Principle) omogućava da visok nivo logike bude nezavistan od konkretnih implementacija zavisnosti, zamenjujući ih apstrakcijama (npr. interfejsima). Ovo olakšava testiranje, jer se u testovima mogu koristiti lažnjaci ili stubovi umesto stvarnih zavisnosti, bez promene testiranog koda.
Primer u C#:
public interface ILogger
{
void Log(string message);
}
public class FileLogger : ILogger
{
public void Log(string message) { /* zapis u fajl */ }
}
public class UserService
{
private readonly ILogger _logger;
public UserService(ILogger logger)
{
_logger = logger;
}
public void CreateUser(string name)
{
// logika kreiranja korisnika
_logger.Log($"Korisnik {name} kreiran");
}
}
// U testovima, može se proslediti mock ILogger:
public class MockLogger : ILogger
{
public List<string> Messages = new List<string>();
public void Log(string message) => Messages.Add(message);
}
Na ovaj način, testovi nisu zavisni od stvarnih implementacija i mogu izolovano proveravati logiku.