Junior — Middle
Cum contribuiează inversarea dependențelor la facilitarea procesului de testare a codului?
sobes.tech AI
Răspuns de la AI
Principiul inversiunii dependențelor (Dependency Inversion Principle) permite separarea logicii de nivel înalt de implementările concrete ale dependențelor, înlocuindu-le cu abstracții (de exemplu, interfețe). Acest lucru facilitează testarea, deoarece în teste se pot folosi mock-uri sau stub-uri în locul dependențelor reale, fără a modifica codul testat.
Exemplu în C#:
public interface ILogger
{
void Log(string message);
}
public class FileLogger : ILogger
{
public void Log(string message) { /* scriere în fișier */ }
}
public class UserService
{
private readonly ILogger _logger;
public UserService(ILogger logger)
{
_logger = logger;
}
public void CreateUser(string name)
{
// logică de creare utilizator
_logger.Log($"Utilizator {name} creat");
}
}
// În teste, se poate transmite un mock de ILogger:
public class MockLogger : ILogger
{
public List<string> Messages = new List<string>();
public void Log(string message) => Messages.Add(message);
}
Astfel, testele nu depind de implementări reale și pot verifica logica în mod izolat.