Sobes.tech
Junior — Middle

Hogyan segíti az függőségek fordított irányba történő megfordítása a kód tesztelésének folyamatát?

sobes.tech MI

Válasz az MI-től

A Függőség Fordítási Elv (Dependency Inversion Principle) lehetővé teszi, hogy a magas szintű logika független legyen az alacsony szintű függőségek konkrét megvalósításaitól, azokat absztrakciókkal (például interfészekkel) helyettesítve. Ez megkönnyíti a tesztelést, mivel a tesztekben helyettesítőket vagy mockokat lehet használni a valódi függőségek helyett anélkül, hogy módosítani kellene a tesztelt kódot.

Példa C#-ban:

public interface ILogger
{
    void Log(string message);
}

public class FileLogger : ILogger
{
    public void Log(string message) { /* írás fájlba */ }
}

public class UserService
{
    private readonly ILogger _logger;
    public UserService(ILogger logger)
    {
        _logger = logger;
    }

    public void CreateUser(string name)
    {
        // felhasználó létrehozási logika
        _logger.Log($"Felhasználó {name} létrehozva");
    }
}

// Tesztekben át lehet adni egy mock ILogger-t:
public class MockLogger : ILogger
{
    public List<string> Messages = new List<string>();
    public void Log(string message) => Messages.Add(message);
}

Így a tesztek nem függenek a valódi megvalósításoktól, és izoláltan ellenőrizhetik a logikát.