golang / mock

GoMock is a mocking framework for the Go programming language.
Apache License 2.0
9.26k stars 608 forks source link

Add -embed flag into mockgen #683

Open stoikheia opened 1 year ago

stoikheia commented 1 year ago

This proposal is to add an option -embed into mockgen.

Why: Sometimes we need to embed the source's interface (or structure) into a mock.

For example, a grpc server takes a mocked server implementation as an argument and determines if the interface is actually embedded as follows:

if !st.Implements(ht) {
    logger.Fatalf("grpc: Server.RegisterService found the handler of type %v that does not satisfy %v", st, ht)
}

https://github.com/grpc/grpc-go/blob/56ac86fa0f3940cb79946ce2c6e56f7ee7ecae84/server.go#L671

The following sample will result in an error when executed. https://github.com/stoikheia/GomockProposalSample1/blob/517c5bb860be39c9d2fa4faff6b0542fe29a7f3e/server/server_test.go#L26-L36

I think that -embed like option is necessary from above.

google-cla[bot] commented 1 year ago

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.