Sobes.tech
Junior — Middle

Asılılıqların tərs çevrilməsi kodun test prosesini necə asanlaşdırır?

sobes.tech Süni İntellekt

AI-dan cavab

Asılılıqların Əksinə Çevrilməsi Prinsipi (Dependency Inversion Principle) yüksək səviyyəli modulları aşağı səviyyəli modullardan müstəqil edir və hər ikisini abstraksiyalara (məsələn, interfeyslərə) əsaslandırır. Bu, testləri asanlaşdırır, çünki testlərdə real asılılıqlar yerinə mock və ya stub istifadə edilə bilər və bu, test olunan kodu dəyişdirmədən edilir.

C# dilində nümunə:

public interface ILogger
{
    void Log(string message);
}

public class FileLogger : ILogger
{
    public void Log(string message) { /* fayla yazma */ }
}

public class UserService
{
    private readonly ILogger _logger;
    public UserService(ILogger logger)
    {
        _logger = logger;
    }

    public void CreateUser(string name)
    {
        // istifadəçi yaradılması loqikası
        _logger.Log($"İstifadəçi {name} yaradıldı");
    }
}

// Testlərdə, mock ILogger istifadə oluna bilər:
public class MockLogger : ILogger
{
    public List<string> Messages = new List<string>();
    public void Log(string message) => Messages.Add(message);
}

Beləliklə, testlər real implementasiyalara bağlı deyil və loqika müstəqil şəkildə yoxlanıla bilər.