go - 解决 mockgen 的导入包冲突

标签 go mocking gomock

我有一个包冲突,我收到以下错误: mockgen-package=mocks-source=myproto.pb.go-destination=mocks/my_mocks.go 导入包冲突:“foo”导入两次

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

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

我希望有人能为我指明方向,以获取有关重复导入的来源的更多信息,检查是否存在问题和/或解决问题。

最佳答案

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

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

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

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

关于go - 解决 mockgen 的导入包冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50476955/

相关文章:

javascript - 根据另一个数组的顺序对数组进行排序 - 对输入

go - zsh:找不到命令:mockgen - golang 1.18 - macOS Monterrey

unit-testing - 如何使用 gomock (或类似的)来模拟/验证对数据库的调用?

json - 使用嵌套的 map[string] 接口(interface)解码 JSON

amazon-web-services - AWS S3 Listing API - 如何列出带有特定前缀的 S3 Bucket 中的所有内容

string - 为什么每次重新启动程序时 math/rand 都返回相同的结果?

具有并行支持的 C# 模拟框架

go - 如何模拟接口(interface)实现

c# - 如何使 FakeItEasy 伪造对象的方法在第一次调用时抛出并在第二次调用时返回?

Golang : how to mock . ..interface{} arguents 使用 gomock