Sobes.tech
Junior — Middle

Jak přispívá inverze závislostí k usnadnění procesu testování kódu?

sobes.tech AI

Odpověď od AI

Princip závislostní inverze (Dependency Inversion Principle) umožňuje, aby vysoká úroveň logiky byla nezávislá na konkrétních implementacích závislostí tím, že je nahrazuje abstrakcemi (například rozhraními). To usnadňuje testování, protože v testech lze použít mocky nebo stuby místo skutečných závislostí, aniž by bylo nutné měnit testovaný kód.

Příklad v C#:

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

public class FileLogger : ILogger
{
    public void Log(string message) { /* zápis do souboru */ }
}

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

    public void CreateUser(string name)
    {
        // logika vytváření uživatele
        _logger.Log($"Uživatel {name} vytvořen");
    }
}

// V testech lze předat mock ILogger:
public class MockLogger : ILogger
{
    public List<string> Messages = new List<string>();
    public void Log(string message) => Messages.Add(message);
}

Tímto způsobem nejsou testy závislé na skutečných implementacích a mohou logiku ověřovat izolovaně.