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