Junior — Middle
Hoe draagt de inversie van afhankelijkheden bij aan het vergemakkelijken van het testproces van de code?
sobes.tech AI
Antwoord van AI
Het Dependency Inversion Principle (DIP) stelt dat hoog-niveau modules niet afhankelijk moeten zijn van laag-niveau modules, maar beide afhankelijk moeten zijn van abstraheringen. Dit maakt testen eenvoudiger, omdat mocks of stubs kunnen worden gebruikt in plaats van echte afhankelijkheden zonder de te testen code te wijzigen.
Voorbeeld in C#:
public interface ILogger
{
void Log(string message);
}
public class FileLogger : ILogger
{
public void Log(string message) { /* schrijven naar bestand */ }
}
public class UserService
{
private readonly ILogger _logger;
public UserService(ILogger logger)
{
_logger = logger;
}
public void CreateUser(string name)
{
// gebruikers aanmaken logica
_logger.Log($"Gebruiker {name} aangemaakt");
}
}
// In tests kan een mock van ILogger worden gebruikt:
public class MockLogger : ILogger
{
public List<string> Messages = new List<string>();
public void Log(string message) => Messages.Add(message);
}
Op deze manier zijn tests niet afhankelijk van echte implementaties en kunnen ze de logica geïsoleerd controleren.