https://github.com/golang/mock
1、 第一步:我们将安装 gomock 第三方库和 mock 代码的生成工具 mockgen。而后者可以大大的节省我们的工作量。只需要了解其使用方式就可以
2、 第二步:输入 mockgen 验证代码生成工具是否安装正确。若无法正常响应,请检查 bin 目录下是否包含该二进制文件
用法
在 mockgen 命令中,支持两种生成模式:
1、 source:从源文件生成 mock 接口(通过 -source 启用)
mockgen -source=foo.go [other options]
2、 reflect:通过使用反射程序来生成 mock 接口。它通过传递两个非标志参数来启用:导入路径和逗号分隔的接口列表
mockgen database/sql/driver Conn,Driver
从本质上来讲,两种方式生成的 mock 代码并没有什么区别。因此选择合适的就可以了
步骤
想清楚整体逻辑
定义想要(模拟)依赖项的 interface(接口)
使用 mockgen 命令对所需 mock 的 interface 生成 mock 文件
编写单元测试的逻辑,在测试中使用 mock
进行单元测试的验证
生成 mock 文件
回到 mockd/ 的根目录下,执行以下命令
$ mockgen -source=./person/male.go -destination=./mock/male_mock.go -package=mock
在执行完毕后,可以发现 mock/ 目录下多出了 male_mock.go 文件,这就是 mock 文件。那么命令中的指令又分别有什么用呢?如下:
-source:设置需要模拟(mock)的接口文件
-destination:设置 mock 文件输出的地方,若不设置则打印到标准输出中
-package:设置 mock 文件的包名,若不设置则为 mock_ 前缀加上文件名(如本文的包名会为 mock_person)
https://segmentfault.com/a/1190000017132133
https://www.jianshu.com/p/598a11bbdafb
https://www.cnblogs.com/li-peng/p/13345307.html
https://blog.csdn.net/ayqy42602/article/details/108144457
https://blog.codecentric.de/2019/07/gomock-vs-testify/