Junior — Middle
Koja je osnovna uloga i primena Mock objekata u procesu testiranja?
sobes.tech АИ
Одговор од АИ
Објекти mock се користе у тестирањима за симулацију понашања стварних компоненти система са којима интерагује тестирани модул. Главна улога mock-а је да изолује тестирани код од спољашњих зависности (нпр. базе података, мрежне сервисе) како би тестови били брзи, поуздани и репродуктивни.
Користећи mock објекте могу се:
- проверити интеракције са зависностима (нпр. позиви метода, пренесени параметри)
- симулирати различите сценарије рада зависности (успех, грешке, кашњења)
- поједноставити постављање тестног окружења.
Пример у Go-у са интерфејсима и mock-овима за тестирање функције која позива спољни сервис:
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
}
// У тесту креирамо mock:
type MockAPI struct {}
func (m *MockAPI) GetData(id string) (string, error) {
if id == "123" {
return "mocked data", nil
}
return "", fmt.Errorf("not found")
}
// Тест
func TestProcessData(t *testing.T) {
mock := &MockAPI{}
result, err := ProcessData(mock, "123")
if err != nil || result != "Processed: mocked data" {
t.Errorf("неочекивани резултат: %v, грешка: %v", result, err)
}
}