Sobes.tech
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)
    }
}