Sobes.tech
Junior — Middle

ტესტირების პროცესში Mock ობიექტების ძირითადი როლი და გამოყენება რა არის?

sobes.tech AI

პასუხი AI-სგან

მოკ ობიექტები გამოიყენება ტესტებში რეალური კომპონენტების ქცევის იმიტაციისთვის, რომელთაც ტესტირებადი მოდული ურთიერთქმედებს. მთავარი როლი mock-ის არის ტესტირებადი კოდის იზოლაცია გარე დამოკიდებულებებისგან (მაგალითად, მონაცემთა ბაზები, ქსელის სერვისები), რათა ტესტები იყოს სწრაფი, საიმედო და გამეორებადი.

Mock ობიექტების გამოყენება საშუალებას აძლევს:

  • დაადასტუროს ურთიერთქმედებები დამოკიდებულებებთან (მაგალითად, მეთოდების გამოძახებები, გადაცემული პარამეტრები)
  • იმიტაცია სხვადასხვა სცენარების მუშაობის დამოკიდებულებების (სწორია, შეცდომები, დაგვიანებები)
  • მარტივია ტესტის გარემოს კონფიგურაცია.

მაგალითი Go-ში, ინტერფეისებისა და mock-ების გამოყენებით, ფუნქციის ტესტირება, რომელიც ზარის გარე სერვისს:

package service

type ExternalAPI interface {
    GetData(id string) (string, error)
}

func ProcessData(api ExternalAPI, id string) (string, error) {
    data, err := api.GetData(id)
    if err != nil {
        return "", err
    }
    return "Processed: " + data, nil
}

// ტესტში mock-ს ვქმნით:

type MockAPI struct {}

func (m *MockAPI) GetData(id string) (string, error) {
    if id == "123" {
        return "mocked data", nil
    }
    return "", fmt.Errorf("not found")
}

// ტესტი
func TestProcessData(t *testing.T) {
    mock := &MockAPI{}
    result, err := ProcessData(mock, "123")
    if err != nil || result != "Processed: mocked data" {
        t.Errorf("უცნობი შედეგი: %v, შეცდომა: %v", result, err)
    }
}