Sobes.tech
Junior — Middle

Testlərdə mocklar və niyə lazımdır

sobes.tech Süni İntellekt

AI-dan cavab

Testlərdə mock (süni) obyektlər, sistemin real asılılıqlarının davranışını təqlid edən saxta obyektlərdir. Onlar test olunan kodu xarici komponentlərdən ayırmaq üçün lazımdır ki, testlər sürətli, etibarlı və təkrarlanabilir olsun.

Məsələn, əgər funksiya verilənlər bazasına bağlıdırsa, əvəzinə əvvəlcədən təyin olunmuş məlumatları qaytaran mock istifadə etmək olar. Bu, funksiyanın məntiqini bazanın problemlərindən asılı olmayaraq yoxlamağa imkan verir.

Go dilində mocklar tez-tez interfeyslər və xüsusi kitabxanalar, məsələn, gomock və ya testify/mock vasitəsilə yaradılır.

Sadə mock nümunəsi Go dilində:

// İnterfeys
 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
 }

// Testdə
 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("gözlənilməz istifadəçi adı")
     }
 }