解决mockgen导入的包冲突问题

时间:2018-05-22 21:52:48

标签: go mocking 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没有显示任何问题。

我希望有人可以指出我的方向,以获取有关重复导入形式的更多信息,检查是否存在某些问题和/或解决问题。

1 个答案:

答案 0 :(得分:0)

这似乎是一个持续存在的问题。我只是碰到它声称"rand"被导入了两次(即使我的代码没有导入"rand")。

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

mockgen -package=mocks -destination=mocks/my_mocks.go path.to/package/containing/myproto/pb/go [space-separated interface names]

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

mockgen -package=mocks -source=myproto.pb.go -destination=mocks/my_mocks.go

但由于某些原因更健壮,并且不会触发重复导入错误。