Back to questions
Junior — Middle
66
Как инверсия зависимостей способствует облегчению процесса тестирования кода?
Companies where asked
Почтатех
Answer from 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);
}
Таким образом, тесты не зависят от реальных реализаций и могут изолированно проверять логику.