Sobes.tech
Назад к вопросам
Junior — Middle
79

Какова основная роль и применение Mock-объектов в процессе тестирования?

Компании, где спрашивали
Lamoda Tech

Ответ от нейросети

sobes.tech AI

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("unexpected result: %v, error: %v", result, err)
    }
}