mock
mock copied to clipboard
Generating mocks (reflect mode) fails if interface contains methods with generic types
Generating mocks (reflect mode) fails with Failed to format generated source code:
if the interface contains methods with generic types.
The generated code contains the full package path as the type.
The wrong type is returned from reflect.typeOf
(see https://github.com/golang/go/issues/55147)
Reproduceable with
package test
import (
_ "github.com/golang/mock/gomock"
)
type TestType string
type TestGenericType[T any] struct {
blaa T
}
//go:generate mockgen -destination zz_generated_mock.go -package mockst . TestGenericInterface
type TestGenericInterface interface {
TestMethod() TestGenericType[TestType]
}
generated file contains e.g. this method
// TestMethod mocks base method.
func (m *MockTestGenericInterface) TestMethod() test.TestGenericType[github.com/daolis/mockgentest/test.TestType] {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "TestMethod")
ret0, _ := ret[0].(test.TestGenericType[github.com/daolis/mockgentest/test.TestType])
return ret0
}
#669 fix it
Closing issue: see #669