【发布时间】:2018-06-22 10:41:38
【问题描述】:
简单的例子。
我有包裹 xxx。这个包包含:
- 结构A
- 接口 B 是 A 的一个字段
-
struct C 是 B 方法中的参数
type A struct { SomeField B } type B interface { SomeMethod(c C) }
现在假设我想为结构 A 和模拟依赖项 B 创建单元测试。为了创建模拟,我正在使用模拟生成器。所有模拟都存储在通用的“模拟”文件夹中。
问题是生成的 mock 依赖于 xxx 包。发生这种情况是因为接口 B 的 SomeMethod 具有参数 xxx.C。
每当我尝试在 a_test.go 中导入我的模拟结构时,它都会因为循环导入问题而失败。 xxx 包在 a_test.go 中导入 mocks 包。和 mocks 包在我生成的 mock 中导入 xxx 包。
我需要一个平静的建议,对此最好的解决方法是什么?也许我的方法不够惯用。您将模拟存储在哪里?
【问题讨论】:
-
xxx package importing mocks package为什么? -
因为 mocks 包中包含了针对 B 接口的 mock。我需要它来模拟 a_test.go 中结构 A 的依赖关系
-
你说的是mock package importing xxx,我很困惑
-
是的,因为 B 的模拟包含方法 SomeMethod ,该方法具有来自包 xxx (xxx.C) 的参数。它应该被导入。
标签: go