工作中,很多公司都要求效能,要求自动化测试
实际落地的过程中发现,要做单元测试,自动化测试,可能当前这个服务会依赖其他服务的数据,接口等等
那么单测或者自动化的过程中,就可能会由于其他服务的原因或者环境因素导致测试失败,或者阻塞测试
这是一个问题,必须得解决,我们可以采用 golang 自带的 mock 工具来完成,可以在一些必要的地方进行数据打桩,mock 数据
gomock 是什么?
是官方提供的 一个 mock 数据的 框架
官方还提供了 mockgen 工具用来帮助 我们 生成测试代码
github 上项目地址是:github.com/golang/mock
官方是这样介绍 gomock的:
gomock 是一个用于Go 编程语言的 mocking 框架。它与 Go 的内置测试包集成得很好,但也可以在其他环境中使用。
如何使用 gomock?
使用 gomock 也是非常简单的,先 go get 对应的 工具 gomock 和 mockgen
go get -u github.com/golang/mock/gomock
go get -u github.com/golang/mock/mockgen
可以写一个 demo 来进行实践
目录结构是这样的
gomock_test
├── go.mod
├── go.sum
├── main.go
└── myfunc
├── mock_myfunc.go
├── myfunc.go
├── myuser.go
└── myuser_test.go
- mock_myfunc.go 是使用 mockgen 工具生成的
- myfunc.go 主要是用于模拟调用的底层实现
- myuser.go 主要是去调用 myfunc.go 里面的接口
- myuser_test.go 是 对应的单测文件
myfunc.go
- 编写一个