Sobes.tech
Junior — Middle

Was ist die Hauptrolle und Anwendung von Mock-Objekten im Testprozess?

sobes.tech KI

Antwort von AI

Mock-Objekte werden im Test verwendet, um das Verhalten realer Systemkomponenten nachzuahmen, mit denen das zu testende Modul interagiert. Die Hauptfunktion von Mock ist es, den getesteten Code von externen Abhängigkeiten (z.B. Datenbanken, Netzwerksdiensten) zu isolieren, damit die Tests schnell, zuverlässig und reproduzierbar sind.

Der Einsatz von Mock-Objekten ermöglicht:

  • Überprüfung der Interaktionen mit Abhängigkeiten (z.B. Methodenaufrufe, übergebene Parameter).
  • Simulation verschiedener Szenarien für Abhängigkeiten (Erfolg, Fehler, Verzögerungen).
  • Vereinfachung der Einrichtung der Testumgebung.

Beispiel in Go mit Interfaces und Mocks für das Testen einer Funktion, die einen externen Dienst aufruft:

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
}

// Im Test erstellen wir ein 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("Unerwartetes Ergebnis: %v, Fehler: %v", result, err)
    }
}