Sobes.tech
Junior — Middle

Testlarda mocklar va nima uchun ular kerak

sobes.tech AI

AIdan javob

Testlarda mock (soxta) obyektlar, tizimning haqiqiy bog'liqliklarining xatti-harakatini taklif qiladigan soxta obyektlardir. Ular test qilinayotgan kodni tashqi komponentlardan ajratib turish uchun zarur, shuning uchun testlar tez, ishonchli va takrorlanadigan bo'ladi.

Masalan, agar funksiya ma'lumotlar bazasiga bog'liq bo'lsa, haqiqiy ulanish o'rniga oldindan belgilangan ma'lumotlarni qaytaradigan mock ishlatish mumkin. Bu funksiyaning mantiqini ma'lumotlar bazasi muammolari tufayli yuzaga keladigan xatoliklardan xavfsiz tarzda tekshirish imkonini beradi.

Go tilida mocklar ko'pincha interfeyslar va maxsus kutubxonalar yordamida, masalan, gomock yoki testify/mock, yordamida yaratiladi.

Go tilida oddiy mock misoli:

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

// Testda
 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("kutilmagan foydalanuvchi nomi")
     }
 }