Junior — Middle
Jaka jest główna rola i zastosowanie obiektów Mock w procesie testowania?
sobes.tech AI
Odpowiedź od AI
Obiekty mock są używane w testach do symulowania zachowania rzeczywistych komponentów systemu, z którymi interakcjonuje testowany moduł. Główną rolą mocka jest izolacja testowanego kodu od zewnętrznych zależności (np. bazy danych, serwisy sieciowe), aby testy były szybkie, niezawodne i powtarzalne.
Użycie obiektów mock pozwala:
- na sprawdzanie interakcji z zależnościami (np. wywołania metod, przekazywane parametry).
- na symulowanie różnych scenariuszy działania zależności (sukces, błędy, opóźnienia).
- na uproszczenie konfiguracji środowiska testowego.
Przykład w Go z użyciem interfejsów i mocków do testowania funkcji wywołującej zewnętrzny serwis:
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
}
// W teście tworzymy 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("nieoczekiwany wynik: %v, błąd: %v", result, err)
}
}