Junior — Middle
Kaip priklausomybių inversija prisideda prie kodo testavimo proceso palengvinimo?
sobes.tech AI
Atsakymas iš AI
Princips par atgriezenisko saiti (Dependency Inversion Principle) ļauj augstākās līnijas loģikai būt neatkarīgai no konkrētām atkarību realizācijām, tās aizstājot ar abstrakcijām (piemēram, interfeisiem). Tas atvieglo testēšanu, jo testos var izmantot moku vai stubu vietā reālas atkarības, nemainot testēto kodu.
Piemērs C#:
public interface ILogger
{
void Log(string message);
}
public class FileLogger : ILogger
{
public void Log(string message) { /* rakstīšana failā */ }
}
public class UserService
{
private readonly ILogger _logger;
public UserService(ILogger logger)
{
_logger = logger;
}
public void CreateUser(string name)
{
// lietotāja izveides loģika
_logger.Log($"Lietotājs {name} izveidots");
}
}
// Testos var nodot moku ILogger:
public class MockLogger : ILogger
{
public List<string> Messages = new List<string>();
public void Log(string message) => Messages.Add(message);
}
Tādējādi, testiem nav atkarības no reālām realizācijām un tie var izolēti pārbaudīt loģiku.