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")
}
}