Sobes.tech
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.