Sobes.tech
Junior — Middle

Care este rolul principal și aplicarea obiectelor Mock în procesul de testare?

sobes.tech AI

Răspuns de la AI

Obiectele mock sunt utilizate în teste pentru a simula comportamentul componentelor reale ale sistemului cu care interacționează modulul testat. Rolul principal al mock-ului este de a izola codul testat de dependențele externe (de exemplu, baze de date, servicii de rețea) pentru ca testele să fie rapide, fiabile și reproductibile.

Utilizarea obiectelor mock permite:

  • verificarea interacțiunilor cu dependențele (de exemplu, apeluri de metode, parametri transmiși);
  • simularea diferitelor scenarii de funcționare ale dependențelor (succes, erori, întârzieri);
  • simplificarea configurării mediului de testare.

Exemplu în Go folosind interfețe și mock-uri pentru testarea unei funcții care apelează un serviciu extern:

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
}

// În test, creăm un mock:

type MockAPI struct {}

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

// Test
func TestProcessData(t *testing.T) {
    mock := &MockAPI{}
    result, err := ProcessData(mock, "123")
    if err != nil || result != "Processed: mocked data" {
        t.Errorf("rezultat neașteptat: %v, eroare: %v", result, err)
    }
}