我最近一直在尝试GoMock
,这是GO语言官方创建者支持的测试模拟框架。我想知道将这些模拟文件放在哪里。
我当前的目录结构如下。这是应该如何构建的GO项目吗?
appname
|-- gateways
|-- gateway1.go
|-- gateway1_test.go
|-- gateway2.go
|-- gateway2_test.go
|-- mocks
|-- gateway1.go
|-- gateway2.go
这受到本·约翰逊(Ben Johnson)在这里演讲的影响略有影响。
我也倾向于遵循本文章
链接到文章
通常,为您的共享模型提供包裹的方法是一个很好的方法。值得注意的一件事是,如果您不在gateways
软件包之外定义模型,则可以获得进口周期。
-
gateways
定义模型 -
mocks
导入gateways.Model
-
gateways
导入mocks
用于测试
有两种解决此问题的方法;第一个只是将模型移至domain
,即gateways
之外的根软件包(有关示例,请参见文章)。或仅通过使用gateways_test
作为测试文件中的软件包来测试gateways
软件包的公共接口。
我将其放在与我的界面相同的包装中,我认为这是一个好地方,因为它与继承的结构分开,我认为您的项目结构不好,我宁愿在下面做(其基础在DDD架构上)
示例
appname
|-- gateways
|-- gateway.go //this file contain interface and mocks
|-- gateway1
|-- gateway1.go
|-- gateway1_test.go
|-- gateway2
|-- gateway2.go
|-- gateway2_test.go