Sobes.tech
Junior — Middle
82

Тәуелділікті кері айналдыру кодты тестілеуді қалай жеңілдетеді?

Сұралған компаниялар
Почтатех

AI-дан жауап

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);
}

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