Sobes.tech
Junior — Middle

Mokai testavime ir kodėl jie reikalingi

sobes.tech AI

Atsakymas iš AI

Testavimo metu mock (ne tikras) objektai yra netikri objektai, kurie imituoja sistemos tikrųjų priklausomybių elgesį. Jie yra būtini, kad testuojamas kodas būtų izoliuotas nuo išorinių komponentų, kad testai būtų greiti, patikimi ir pakartojami.

Pavyzdžiui, jei funkcija priklauso nuo duomenų bazės, vietoje tikro ryšio galima naudoti mock, kuris grąžina iš anksto nustatytus duomenis. Tai leidžia patikrinti funkcijos logiką be rizikos susidurti su klaidomis dėl duomenų bazės problemų.

Go kalboje mockai dažnai kuriami naudojant sąsajas ir specialias bibliotekas, pavyzdžiui, gomock ar testify/mock.

Paprastas mock pavyzdys Go kalboje:

// Sąsaja
 type DB interface {
     GetUser(id int) (User, error)
 }

// Mock
 type MockDB struct {}

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

// Teste
 func TestGetUserName(t *testing.T) {
     db := &MockDB{}
     user, err := db.GetUser(1)
     if err != nil {
         t.Fatal(err)
     }
     if user.Name != "Test User" {
         t.Errorf("nenumatytas vartotojo vardas")
     }
 }