Какими пользовался библиотеками для мокирования

«Какими пользовался библиотеками для мокирования» — вопрос из категории Тестирование, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Go популярны следующие библиотеки для мокирования:

  1. testify/mock – стандартный выбор для создания моков. Позволяет описывать ожидаемые вызовы и возвращаемые значения.
type MyMock struct {
    mock.Mock
}

func (m *MyMock) DoSomething(arg int) error {
    args := m.Called(arg)
    return args.Error(0)
}

func TestSomething(t *testing.T) {
    mockObj := new(MyMock)
    mockObj.On("DoSomething", 123).Return(nil)
    // тестируем
    mockObj.AssertExpectations(t)
}
  1. gomock – генерация моков на основе интерфейсов через mockgen. Более строгий подход.

  2. vektra/mockery – генератор моков для интерфейсов (альтернатива gomock).

  3. h2non/gock – мокирование HTTP-запросов.

Для юнит-тестов чаще используют testify/mock из-за простоты, для сложных случаев – gomock с кодогенерацией.