Sobes.tech
Junior — Middle

Мокҳо дар санҷиш ва чаро онҳо заруранд

sobes.tech AI

Ҷавоб аз AI

Тестларда мок (имитация) объектлар — бу системанинг реал бўғлиқларининг хулқ-атворини такрорлайдиган ёлғон объектлардир. Улар тест қилинган кодни ташқи компонентлардан изоляциялаш учун зарур, шунда тестлар тез, ишончли ва қайта ишлаб чиқилиши мумкин бўлади.

Масалан, агар функция маълумотлар базасига боғлиқ бўлса, ҳақиқий уланиш ўрнига олдиндан белгиланган маълумотларни қайтарувчи мокдан фойдаланиш мумкин. Бу функциянинг логикасини маълумотлар базасидаги муаммолардан хавфсиз текшириш имконини беради.

Go тилида моклар кўпинча интерфейслар ва махсус китобхоналар ёрдамида, масалан, gomock ёки testify/mock, ёрдамида яратилади.

Oddiy мок мисоли 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("кутилган фойдаланувчи номи")
     }
 }