Sobes.tech
Junior — Middle

Тестирлөөдө моктор жана алар эмне үчүн керек

sobes.tech AI

AIден жооп

Тесттерде мок (жасалма) объекттер — бул системанын чын көз карандылыктарынын жүрүм-турумун имитациялай турган жалган объекттер. Алар тесттелип жаткан кодду тышкы компоненттерден бөлүп кармоо үчүн керек, ошондуктан тесттер тез, ишенимдүү жана кайра кайталоого болот.

Мисалы, эгер функция базага көз каранды болсо, чын байланышты колдонуу ордуна алдын ала белгиленген маалыматтарды кайтарган мок колдонсо болот. Бул функциянын логикасын база маселелеринен коркпостон текшерүүгө мүмкүндүк берет.

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("күтүлгөн эмес колдонуучу аты")
     }
 }