golang / mock

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

Add -embed flag into mockgen #683

Open stoikheia opened 2 years ago

stoikheia commented 2 years 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 2 years 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.