安装
包下载:go get github.com/golang/mock/gomock
获取文档:go doc github.com/golang/mock/gomock
代码生成包:go get github.com/golang/mock/mockgen
接口文件
//定义接口文件,如下。并实现接口
package demo
type demoInter interface {
DemoAction() string
}
生成代码
- source: 指定接口文件
- destination: 生成的文件名
- package:生成文件的包名
- imports: 依赖的需要import的包
- aux_files:接口文件不止一个文件时附加文件
- build_flags: 传递给build工具的参数
mockgen -destination=./mock/mock_demo.go --source=./demo.go -package=mock_demo
使用MOCK
- 创建XXX_test.go文件
- 创建测试方法:
TestXXX(t *testing.T) {} - 方法中使用mock:
a.创建控制器:c := gomock.NewController(t)
b.实例化mock:rs := mock_demo.NewXXX(c)
c.设置对应方法的返回:rs.EXPECT().DemoAction().Return(data, nil)
d.调用对应方法
e.判断结果
分析mock生成的代码
- gomock.NewController(t):返回1个控制实例
- NewMockXXX(c):
//生成的mock类型
type MockXXX struct {
ctrl *gomock.Controller
recorder *MockXXXMockRecorder
}
//这里主要是实例化根据你之前定的接口而生成的mock类型
func NewXXXTool(ctrl *gomock.Controller) *MockXXX {
mock := &MockXXX{
ctrl: ctrl}
mock.recorder

本文介绍了如何使用gomock进行单元测试,包括安装gomock、定义接口文件、生成mock代码,以及如何在测试中使用mock对象模拟数据库操作和RPC方法。通过详细步骤解析,帮助读者理解并掌握gomock在单元测试中的应用。
最低0.47元/天 解锁文章

1083

被折叠的 条评论
为什么被折叠?



