Sobes.tech
Junior — Middle

Ի՞նչ է Mock օբյեկտների հիմնական դերը և կիրառությունը փորձարկման գործընթացում։

sobes.tech AI

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

Mock օբյեկտները օգտագործվում են թեստերում՝ իրական համակարգի բաղադրիչների վարքագիծը սիմուլացնելու համար, որոնց հետ փոխազդում է թեստավորվող մոդուլը։ 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)
    }
}