Sobes.tech
Junior — Middle

Kokia yra pagrindinė Mock objektų vaidmuo ir taikymas testavimo procese?

sobes.tech AI

Atsakymas iš AI

Mock objektai naudojami testavimuose, siekiant imituoti tikrų komponentų elgesį, su kuriais sąveikauja testuojamas modulis. Pagrindinė mock funkcija yra izoliuoti testuojamą kodą nuo išorinių priklausomybių (pvz., duomenų bazės, tinklo paslaugos), kad testai būtų greiti, patikimi ir pakartojami.

Mock objektų naudojimas leidžia:

  • patikrinti sąveiką su priklausomybėmis (pvz., metodų kvietimus, perduotus parametrus)
  • imituoti įvairius priklausomybių veikimo scenarijus (sėkmė, klaidos, delsimas)
  • supaprastinti testavimo aplinkos nustatymą.

Pavyzdys Go kalba, naudojant sąsajas ir mock'us, testuojant funkciją, kuri kviečia išorinę paslaugą:

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
}

// Teste sukuriame mock:

type MockAPI struct {}

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

// Testas
func TestProcessData(t *testing.T) {
    mock := &MockAPI{}
    result, err := ProcessData(mock, "123")
    if err != nil || result != "Processed: mocked data" {
        t.Errorf("nenumatytas rezultatas: %v, klaida: %v", result, err)
    }
}