Sobes.tech
Middle

Kas yra mock-objektas (melagingas objektas) testavime?

sobes.tech AI

Atsakymas iš AI

Testuose mock-objektas (melagingas objektas) yra specialus objektas, kuris imituoja tikro komponento arba modulio elgseną. Jis naudojamas testuojamo kodo izoliuotumui nuo išorinių priklausomybių, kad būtų galima patikrinti logiką be tikrų paslaugų ar išteklių įtakos.

Pavyzdžiui, jei turite funkciją, kuri prieina prie duomenų bazės, testuose vietoje tikro ryšio galite naudoti mock-objektą, kuris grąžins iš anksto nustatytus duomenis. Tai pagreitina testus ir daro juos patikimesnius.

Go kalba su interfeisais ir mock pavyzdys:

// Interfeisas darbui su duomenų baze
type UserRepository interface {
    GetUser(id int) (*User, error)
}

// Mock įgyvendinimas
type MockUserRepo struct {}

func (m *MockUserRepo) GetUser(id int) (*User, error) {
    return &User{ID: id, Name: "Test User"}, nil
}

// Teste
func TestGetUserName(t *testing.T) {
    repo := &MockUserRepo{}
    user, err := repo.GetUser(1)
    if err != nil {
        t.Fatal(err)
    }
    if user.Name != "Test User" {
        t.Errorf("laukta Test User, gauta %s", user.Name)
    }
}

Šiuo būdu mock-objektai padeda sukurti kontroliuojamą testavimo aplinką ir atskleisti klaidas logikoje be priklausomybės nuo išorinių sistemų.