Junior — Middle
Jaká je hlavní role a použití Mock objektů v procesu testování?
sobes.tech AI
Odpověď od AI
Objekty mock se používají v testování k simulaci chování skutečných komponent systému, se kterými interaguje testovaný modul. Hlavní funkcí mocku je izolovat testovaný kód od externích závislostí (například databází, síťových služeb), aby testy byly rychlé, spolehlivé a reprodukovatelné.
Použití mock objektů umožňuje:
- ověřovat interakce se závislostmi (například volání metod, předávané parametry)
- simulovat různé scénáře chodu závislostí (úspěch, chyby, zpoždění)
- zjednodušit nastavení testovacího prostředí.
Příklad v Go s použitím rozhraní a mocků pro testování funkce, která volá externí službu:
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
}
// V testu vytvoříme 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("nečekaný výsledek: %v, chyba: %v", result, err)
}
}