Sobes.tech
Junior — Middle

Jaka jest główna rola i zastosowanie obiektów Mock w procesie testowania?

sobes.tech AI

Odpowiedź od AI

Obiekty mock są używane w testach do symulowania zachowania rzeczywistych komponentów systemu, z którymi interakcjonuje testowany moduł. Główną rolą mocka jest izolacja testowanego kodu od zewnętrznych zależności (np. bazy danych, serwisy sieciowe), aby testy były szybkie, niezawodne i powtarzalne.

Użycie obiektów mock pozwala:

  • na sprawdzanie interakcji z zależnościami (np. wywołania metod, przekazywane parametry).
  • na symulowanie różnych scenariuszy działania zależności (sukces, błędy, opóźnienia).
  • na uproszczenie konfiguracji środowiska testowego.

Przykład w Go z użyciem interfejsów i mocków do testowania funkcji wywołującej zewnętrzny serwis:

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
}

// W teście tworzymy 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("nieoczekiwany wynik: %v, błąd: %v", result, err)
    }
}