Sobes.tech
Junior — Middle

Moki testēšanā un kāpēc tie ir nepieciešami

sobes.tech AI

Atbilde no AI

Testēšanas laikā mock (fiktīvi) objekti ir viltus objekti, kas imitē sistēmas reālo atkarību uzvedību. Tie ir nepieciešami, lai izolētu testēto kodu no ārējiem komponentiem, lai testi būtu ātri, uzticami un atkārtojami.

Piemēram, ja funkcija ir atkarīga no datu bāzes, vietā, lai izmantotu reālu savienojumu, var izmantot mock, kas atgriež iepriekš noteiktus datus. Tas ļauj pārbaudīt funkcijas loģiku bez riska, ka kļūdas rodas datu bāzes problēmu dēļ.

Go valodā mockus bieži veido, izmantojot interfeisus un īpašas bibliotēkas, piemēram, gomock vai testify/mock.

Vienkāršs mock piemērs Go valodā:

// Interfeiss
 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
 }

// Testā
 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("negaidīts lietotāja vārds")
     }
 }