matryer / moq

Interface mocking tool for go generate
http://bit.ly/meetmoq
MIT License
2k stars 127 forks source link

Support non-basic type constraints #200

Open samherrmann opened 1 year ago

samherrmann commented 1 year ago

This issue is to track the limitation that was mentioned in the description of #175.

Consider the following interface:

type Sorter[T comparable] interface {
    Sort(slice []T) []T
}

When generating a mock using moq v0.3.2, the following implementation check is created:

var _ Sorter[comparable] = &SorterMock[comparable]{}

This code is not valid due to the following reason:

cannot use type comparable outside a type constraint: interface is (or embeds) comparable

samherrmann commented 1 year ago

My current workaround is to use the -skip-ensure flag. This workaround prevents me from having to manually modify the generated mock file, which is crucial because this allows go generate ./... to be re-run on the project without overwriting manual changes.