Sobes.tech
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")
     }
 }