Go语言 要将模拟放在哪个目录?

rqcrx0a6  于 2023-06-03  发布在  Go
关注(0)|答案(2)|浏览(192)

我最近一直在尝试GoMock,这是Go语言官方创建者支持的测试模拟框架。我想知道把这些模拟文件放在哪里最合理。
我目前的目录结构如下。Go项目应该是这样构建的吗?

appname
|-- gateways
    |-- gateway1.go
    |-- gateway1_test.go
    |-- gateway2.go
    |-- gateway2_test.go
    |-- mocks
        |-- gateway1.go
        |-- gateway2.go

这一点受到了本·Json的演讲的影响。

hxzsmxv2

hxzsmxv21#

我倾向于遵循这篇文章也由本Json
Link to article
一般来说,这种为共享模拟创建一个包的方法是很好的。这里值得指出的一点是,如果您没有在gateways包之外定义模型,那么您可能会得到一个导入周期。

  1. gateways定义模型
  2. mocks导入gateways.Model
  3. gateways导入mocks进行测试
    有两种方法可以解决这个问题;第一种方法是将模型移到domain中,这是gateways之外的一个根包(参见文章中的示例)。或者在测试文件中使用gateways_test作为包,只测试gateways包的公共接口。
euoag5mw

euoag5mw2#

我把它和我的接口放在同一个包里,在我看来,这是一个好地方,因为它和继承的结构体是分开的。我认为你的项目结构不好,我宁愿在下面这样做(它基于DDD架构)
范例

appname
|-- gateways
    |-- gateway.go //this file contain interface and mocks 
    |-- gateway1
        |-- gateway1.go
        |-- gateway1_test.go 
    |-- gateway2
        |-- gateway2.go
        |-- gateway2_test.go

相关问题