Sobes.tech
Junior — Middle

Mockovi u testiranju i zašto su potrebni

sobes.tech АИ

Одговор од АИ

Мокови (лаке објекти) у тестирању су лажни објекти који имитирају понашање стварних зависности система. Они су неопходни за изолацију тестираног кода од спољашњих компоненти, како би тестови били брзи, поуздани и репродуктивни.

На пример, ако функција зависи од базе података, уместо стварне везе може се користити мок који враћа унапред задате податке. Ово омогућава проверу логике функције без ризика од неуспеха због проблема са базом података.

У Go-у, мокови се често креирају помоћу интерфејса и специјалних библиотека, као што су gomock или testify/mock.

Пример једноставног мока у Go-у:

// Интерфејс
 type DB interface {
     GetUser(id int) (User, error)
 }

// Мок
 type MockDB struct {}

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

// У тесту
 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("неочекивано име корисника")
     }
 }