Sobes.tech
Junior — Middle

Mis on Mock-objektide peamine roll ja kasutus testimisprotsessis?

sobes.tech AI

Vastus AI-lt

Mock-objektid kasutatakse testides, et simuleerida tegelike süsteemi komponentide käitumist, millega testitav moodul suhtleb. Mocki peamine roll on testitava koodi eraldamine väliste sõltuvuste (näiteks andmebaasid, võrguteenused) eest, et testid oleksid kiired, usaldusväärsed ja korduvad.

Mock-objektide kasutamine võimaldab:

  • kontrollida sõltuvustega suhtlemist (näiteks meetodite kutsed, edastatud parameetrid)
  • simuleerida sõltuvuste erinevaid tööstsenaariumeid (edu, vead, viivitused)
  • lihtsustada testkeskkonna seadistamist.

Näide Go keeles, kasutades liideseid ja mocke, testimaks funktsiooni, mis kutsub välja välise teenuse:

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
}

// Testis loome mocki:

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("ootamatult tulemus: %v, viga: %v", result, err)
    }
}