Sobes.tech
Junior — Middle

Wat is de belangrijkste rol en toepassing van Mock-objecten in het testproces?

sobes.tech AI

Antwoord van AI

Mock-objecten worden in tests gebruikt om het gedrag van echte systeemcomponenten na te bootsen waarmee de geteste module interactie heeft. De belangrijkste rol van mock is het isoleren van de geteste code van externe afhankelijkheden (bijvoorbeeld databases, netwerkservices) zodat tests snel, betrouwbaar en reproduceerbaar zijn.

Het gebruik van mock-objecten maakt het mogelijk:

  • om interacties met afhankelijkheden te controleren (bijvoorbeeld methodeaanroepen, doorgegeven parameters).
  • om verschillende scenario's van afhankelijkheden te simuleren (succes, fouten, vertragingen).
  • om de testomgeving eenvoudiger in te stellen.

Voorbeeld in Go met interfaces en mocks voor het testen van een functie die een externe service aanroept:

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
}

// In de test maken we een 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("onverwacht resultaat: %v, fout: %v", resultaat, err)
    }
}