解决嘲笑的进口的包裹碰撞

Bre*_*ren 6 mocking go gomock

我遇到程序包冲突,并收到以下错误: mockgen -package=mocks -source=myproto.pb.go -destination=mocks/my_mocks.go imported package collision: "foo" imported twice

我看到一个明显的导入: import foo "blah/blah/foo"

但是我不知道从哪里开始追踪重复的导入(也不知道它来自何处)。对我来说这很奇怪,因为我正在导入myproto.pb.go就很好了,所以我想知道是否真的有重复导入的问题。此外,GoLand也没有显示任何问题。

我希望有人可以指出我的方向,以获取有关重复导入将在何处进行的更多信息,检查是否存在问题和/或解决该问题。

mdi*_*mer 2

这似乎是一个持续存在的问题。我刚刚遇到它,它声称"rand"导入了两次(即使我的代码不导入"rand")。

以下解决方法对我有用:写下您想要模拟的接口列表myproto.pb.go,并使用“反射模式”而不是“源模式”

mockgen -package=mocks -destination=mocks/my_mocks.go path.to/package/containing/myproto/pb/go [space-separated interface names]
Run Code Online (Sandbox Code Playgroud)

应该等同于您之前的调用:

mockgen -package=mocks -source=myproto.pb.go -destination=mocks/my_mocks.go
Run Code Online (Sandbox Code Playgroud)

但由于某种原因更加健壮并且不会触发双重导入错误。