mock icon indicating copy to clipboard operation
mock copied to clipboard

Provide a new flag that makes the generated constructor function private

Open sakuradon99 opened this issue 2 years ago • 1 comments

In my code, there are some private interfaces that should only be accessed within the current package. However, when I use gomock to generate mock code, other packages can call NewmockXXX to create a mock of those interfaces, which is not what we expect. I would like to achieve a functionality similar to the following:

...
	private            = flag.Bool("private", false, "Generate private constructor functions for all mocks")
...
...
	newStr := "New"
	if *private {
		newStr = "new"
	}
	g.p("// "+newStr+"%v creates a new mock instance.", mockType)
	g.p("func "+newStr+"%v%v(ctrl *gomock.Controller) *%v%v {", mockType, longTp, mockType, shortTp)
	g.in()
...

sakuradon99 avatar Jul 17 '23 04:07 sakuradon99

I see three use cases:

  1. Generate public mocks for all interfaces.
  2. Generate private mocks for all interfaces
  3. Generate public mocks for public interfaces, private for private ones.

Maybe it's better to make "private" a flag with multiple string values, like "exlude_interfaces" or "mock_names"?

tulzke avatar Nov 13 '23 11:11 tulzke