mock
mock copied to clipboard
Provide a new flag that makes the generated constructor function private
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()
...
I see three use cases:
- Generate public mocks for all interfaces.
- Generate private mocks for all interfaces
- 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"?