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);
}
Таким образом, тесты не зависят от реальных реализаций и могут изолированно проверять логику.