Sobes.tech
Junior — Middle

Մոկեր թեստավորման մեջ և ինչու են դրանք անհրաժեշտ

sobes.tech AI

Պատասխան AI-ից

Թեստավորման մեջ mock (կեղծ) օբյեկտները՝ դա այն օբյեկտներն են, որոնք պատճենում են համակարգի իրական կախվածությունների վարքը։ Դրանք անհրաժեշտ են թեստվող կոդը արտաքին բաղադրիչներից առանձնացնելու համար, որպեսզի թեստերը լինեն արագ, հուսալի և վերարտադրելի։

Օրինակ, եթե ֆունկցիան կախված է տվյալների բազայից, փոխարենը իրական կապի օգտագործման, կարելի է օգտագործել mock, որը վերադարձնում է նախապես սահմանված տվյալներ։ Սա թույլ է տալիս ստուգել ֆունկցիայի տրամաբանությունը առանց բազայի խնդիրների պատճառով ձախողումների ռիսկի։

Go լեզվում, mock-երը հաճախ ստեղծվում են ինտերֆեյսների և հատուկ գրադարանների, օրինակ, gomock կամ testify/mock, օգնությամբ։

Պարզ mock օրինակ Go լեզվում՝

// Ինտերֆեյս
 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
 }

// Թեստում
 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("չսպասված օգտվողի անուն")
     }
 }