Sobes.tech
Junior — Middle

Как допринася обръщането на зависимостите за улесняване на процеса на тестване на кода?

sobes.tech AI

Отговор от AI

Принципът за обръщане на зависимостите (Dependency Inversion Principle) позволява високото ниво на логиката да бъде независимо от конкретните реализации на зависимостите, като ги замества с абстракции (например, интерфейси). Това улеснява тестването, тъй като в тестовете могат да се използват мока или стабове вместо реалните зависимости, без да се променя тестваният код.

Пример на C#:

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

public class FileLogger : ILogger
{
    public void Log(string message) { /* запис във файл */ }
}

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

    public void CreateUser(string name)
    {
        // логика за създаване на потребител
        _logger.Log($"Потребител {name} създаден");
    }
}

// В тестовете може да се подаде мок на ILogger:
public class MockLogger : ILogger
{
    public List<string> Messages = new List<string>();
    public void Log(string message) => Messages.Add(message);
}

По този начин, тестовете не зависят от реалните реализации и могат да проверяват логиката изолирано.