Junior — Middle
Come la inversione delle dipendenze contribuisce a facilitare il processo di testing del codice?
sobes.tech AI
Risposta dell'AI
Il principio di inversione delle dipendenze (Dependency Inversion Principle) consente di separare la logica di alto livello dalle implementazioni concrete delle dipendenze, sostituendole con astrazioni (ad esempio, interfacce). Ciò rende più facile il testing, poiché si possono usare mock o stub nei test al posto delle dipendenze reali senza modificare il codice in fase di test.
Esempio in C#:
public interface ILogger
{
void Log(string message);
}
public class FileLogger : ILogger
{
public void Log(string message) { /* scrittura su file */ }
}
public class UserService
{
private readonly ILogger _logger;
public UserService(ILogger logger)
{
_logger = logger;
}
public void CreateUser(string name)
{
// logica di creazione utente
_logger.Log($"Utente {name} creato");
}
}
// Nei test, si può passare un mock di ILogger:
public class MockLogger : ILogger
{
public List<string> Messages = new List<string>();
public void Log(string message) => Messages.Add(message);
}
In questo modo, i test non dipendono da implementazioni reali e possono verificare la logica in modo isolato.