Sobes.tech
Junior — Middle
80

Как инверсия зависимостей способствует облегчению процесса тестирования кода?

Компании, где спрашивали
Почтатех

Ответ от нейросети

sobes.tech 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($"User {name} created");
    }
}

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

Таким образом, тесты не зависят от реальных реализаций и могут изолированно проверять логику.