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")
}
}