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)
}
}