mock
mock copied to clipboard
Wrong mock generated for the interface with generics
Actual behavior A clear and concise description of what the bug is.
For the interface with generics
type Model[T any] interface {
*T
TableName() string
}
type Client[T any, P types.Model[T]] interface {
Create(*P) error
}
The generated mock is like this
// MockClient is a mock of Client interface.
type MockClient[T any, P types.Model[client.T]] struct {
ctrl *gomock.Controller
recorder *MockClientMockRecorder[T, P]
}
// MockClientMockRecorder is the mock recorder for MockClient.
type MockClientMockRecorder[T any, P types.Model[client.T]] struct {
mock *MockClient[T, P]
}
// NewMockClient creates a new mock instance.
func NewMockClient[T any, P types.Model[client.T]](ctrl *gomock.Controller) *MockClient[T, P] {
mock := &MockClient[T, P]{ctrl: ctrl}
mock.recorder = &MockClientMockRecorder[T, P]{mock}
return mock
}
Expected behavior A clear and concise description of what you expected to happen.
The argument for the P should be T, not the client.T
.
// MockClient is a mock of Client interface.
type MockClient[T any, P types.Model[T]] struct {
ctrl *gomock.Controller
recorder *MockClientMockRecorder[T, P]
}
To Reproduce Steps to reproduce the behavior
- git clone https://github.com/heww/gomock-issue.git
- go generate ./...
Additional Information
- gomock mode (reflect or source):
- gomock version or git ref: v1.7.0-rc.1
- golang version: 1.19.7
Triage Notes for the Maintainers