请您解释一下组织单元测试的正确方法是什么?例如,如果想模拟我的struct依赖项,我需要创建一个模拟依赖项,其中"实现"一些界面。
我应该在哪里创建这个模拟器?它应该在同一个测试文件中创建吗?但是,如果我在另一个测试中需要它呢? Go不允许在同一个包的2个不同文件中定义具有相同名称的结构(例如UserServiceMock)。那么定义这个模拟结构的最佳位置是什么?
另一个问题。我应该自己实现这种模拟,还是有一些库/工具允许我这样做?
答案 0 :(得分:1)
答案 1 :(得分:0)
我也遇到了这个问题,我通过在单独的文件中放置模拟接口及其声明来解决它。
mockery -dir=service -all -inpkg
我使用mockery生成它们,这将在同一个文件夹中创建mock。按照上面的命令,它将为服务目录中存在的每个接口生成一个单独的文件。例如:mock_MyInterface.go
。
如果你没有使用-inpkg
标志,它会在默认文件夹mocks
中创建模拟,但是它不会在模拟实现中添加任何前缀,因此当你愿意时它会产生问题在单元测试中导入mocks包,因为由于模拟和原始实现具有相同名称而导致冲突。