Sobes.tech
Junior — Middle

Aká je hlavná úloha a použitie Mock objektov v procese testovania?

sobes.tech AI

Odpoveď od AI

Objekty mock sa používané v testovaní na simuláciu správania skutočných komponentov systému, s ktorými interaguje testovaný modul. Hlavná úloha mock je izolovať testovaný kód od externých závislostí (napríklad databáz, sieťových služieb), aby testy boli rýchle, spoľahlivé a reprodukovateľné.

Použitie mock objektov umožňuje:

  • overiť interakcie so závislosťami (napríklad volania metód, odovzdané parametre)
  • simulovať rôzne scenáre chodu závislostí (úspech, chyby, oneskorenia)
  • zjednodušiť nastavenie testovacieho prostredia.

Príklad v Go s použitím rozhraní a mockov na testovanie funkcie, ktorá volá externý servis:

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
}

// V teste vytvoríme 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("nečakaný výsledok: %v, chyba: %v", result, err)
    }
}