Junior — Middle
Mockid testimises ja miks need vajalikud on
sobes.tech AI
Vastus AI-lt
Testimise ajal mock (valet) objektid on võltsobjektid, mis jäljendavad süsteemi tegelike sõltuvuste käitumist. Need on vajalikud testitava koodi eraldamiseks väliste komponentide eest, et testid oleksid kiired, usaldusväärsed ja korduvad.
Näiteks, kui funktsioon sõltub andmebaasist, saab selle asemel kasutada mocki, mis tagastab eelnevalt määratletud andmed. See võimaldab kontrollida funktsiooni loogikat ilma andmebaasi probleemide tõttu tekkivate rikete riskita.
Go keeles luuakse mocke sageli kasutades liideseid ja spetsiaalseid teeke, näiteks gomock või testify/mock.
Lihtne mock näide Go keeles:
// Liides
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
}
// Testis
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("ootamat kasutaja nimi")
}
}