Sobes.tech
Back to questions
Middle+
4

Как генерируешь моки?

Companies where asked
Magnit Tech

Answer from AI

sobes.tech AI

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

Популярные способы генерации моков:

  • gomock — официальная библиотека от Google. Используется вместе с инструментом mockgen, который по интерфейсу генерирует мок-структуру.

    Пример генерации:

    mockgen -source=service.go -destination=mock_service.go -package=service
    
  • mockery — удобный генератор моков, поддерживает различные опции.

  • moq — простой генератор моков.

Пример использования gomock:

import (
    "testing"
    "github.com/golang/mock/gomock"
    "your/module/service"
)

func TestSomething(t *testing.T) {
    ctrl := gomock.NewController(t)
    defer ctrl.Finish()

    mockRepo := service.NewMockUserRepository(ctrl)
    mockRepo.EXPECT().GetUser(1).Return(service.User{ID:1, Name:"Mock User"}, nil)

    // тестируемый код с mockRepo
}

Таким образом, генерация моков позволяет автоматизировать создание заглушек и облегчить написание тестов с изоляцией зависимостей.