Sobes.tech
Junior — Middle

Test prosesində Mock obyektlərinin əsas rolu və tətbiqi nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Mock obyektləri testlərdə istifadə olunur ki, sistemin real komponentlərinin davranışını simulyasiya etsinlər və test olunan modul ilə qarşılıqlı əlaqədə olsunlar. Mock-un əsas rolu, test olunan kodu xarici asılılıqlardan (məsələn, verilənlər bazaları, şəbəkə xidmətləri) ayırmaqdır ki, testlər sürətli, etibarlı və təkrarlanabilir olsun.

Mock obyektlərinin istifadəsi aşağıdakı imkanları verir:

  • asılılıqlarla qarşılıqlı əlaqələri yoxlamaq (məsələn, metod çağırışları, ötürülən parametrlər);
  • asılılıqların müxtəlif işləmə ssenarilərini simulyasiya etmək (uğur, səhvlər, gecikmələr);
  • test mühitinin qurulmasını sadələşdirmək.

Go dilində interfeys və mock istifadə edərək xarici xidməti çağıran funksiyanın test nümunəsi:

package service

type ExternalAPI interface {
    GetData(id string) (string, error)
}

func ProcessData(api ExternalAPI, id string) (string, error) {
    data, err := api.GetData(id)
    if err != nil {
        return "", err
    }
    return "Processed: " + data, nil
}

// Testdə mock yaradılır:

type MockAPI struct {}

func (m *MockAPI) GetData(id string) (string, error) {
    if id == "123" {
        return "mocked data", nil
    }
    return "", fmt.Errorf("not found")
}

// Test
func TestProcessData(t *testing.T) {
    mock := &MockAPI{}
    result, err := ProcessData(mock, "123")
    if err != nil || result != "Processed: mocked data" {
        t.Errorf("gözlənilməz nəticə: %v, xəta: %v", result, err)
    }
}