Назад к вопросам
Senior
3
Как генерируете моки для юнит-тестов?
Компании, где спрашивали
Финтехробот
Ответ от нейросети
sobes.tech AI
В Go для генерации моков обычно используют инструменты, которые автоматически создают заглушки интерфейсов на основе их описания. Популярные подходы:
- Использование
mockgenиз пакетаgomock- Определяете интерфейс.
- Запускаете
mockgenдля генерации моков. - В тестах создаёте экземпляр мок-объекта и задаёте ожидаемое поведение.
Пример:
//go:generate mockgen -source=service.go -destination=mocks/mock_service.go -package=mocks
// В тесте
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
mockService := mocks.NewMockMyService(mockCtrl)
mockService.EXPECT().DoSomething(gomock.Any()).Return(nil)
-
Использование
testify/mock- Создаёте структуру, встраивающую
mock.Mock. - Определяете методы с вызовом
mock.Called.
- Создаёте структуру, встраивающую
-
Ручное написание моков — подходит для простых случаев, но не масштабируемо.
Автоматическая генерация моков позволяет быстро обновлять заглушки при изменении интерфейсов и поддерживать чистоту кода.