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

Каким образом реализуешь замещающие объекты для модульного тестирования?

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

sobes.tech AI

В Go для модульного тестирования замещающие объекты (моки, стабы) обычно реализуются с помощью интерфейсов.

  1. Определяете интерфейс, который описывает нужное поведение.
  2. Создаёте структуру, реализующую этот интерфейс, с нужной логикой для теста.

Пример:

package service

type Database interface {
    GetUser(id int) (User, error)
}

type User struct {
    ID int
    Name string
}

// Реализация замещающего объекта для теста

type MockDB struct {}

func (m *MockDB) GetUser(id int) (User, error) {
    return User{ID: id, Name: "Test User"}, nil
}

// В тесте можно использовать MockDB вместо реальной базы

Также можно использовать сторонние библиотеки для моков, например, gomock или testify/mock.