Ответ
В Go популярны следующие библиотеки для мокирования:
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)
}
-
gomock– генерация моков на основе интерфейсов черезmockgen. Более строгий подход. -
vektra/mockery– генератор моков для интерфейсов (альтернативаgomock). -
h2non/gock– мокирование HTTP-запросов.
Для юнит-тестов чаще используют testify/mock из-за простоты, для сложных случаев – gomock с кодогенерацией.