1. 最简单的一个mock例子
可以使用gomock、gomonkey、mockito等框架实现。
2. Mock数据库
原理:根据使用的ORM,构造出一个相应的句柄(handler),相当于可以理解成生成了一个虚拟数据库,然后在这个虚拟数据库中放入数据,接着调用这个handler中相关的CRUD接口,就可以进行对数据的处理。
参考:
go 单元测试go-sqlmock
3. 使用gomock框架
- 文档
- 单测进阶
- go:generate的使用
- Mock接口测试
go:generate主要是要来执行命令的,它会执行
//go:generate
后面的命令 gomock 模拟对象的方式是让用户声明一个接口,然后使用 gomock 提供的 mockgen 工具生成 mock 对象代码。要模拟( mock )被测试代码的依赖对象时候,即可使用 mock 出来的对象来模拟和记录依赖对象的各种行为 过程: 根据代码中的接口,使用mockgen工具生成mock对象,然后当代码有依赖时,直接对这个对象进行mock即可完成各种行为。
例如,通过下面的代码可以去Mock一个Test接口
//go:generate mockgen -destination=../../mocks/mock_Test.go -package=mocks xx.xx.xx/xxx/xxxx/test Test
4. 对“序列化函数”进行mock,方便构造byte数据
有时候,会遇到入参为byte类型,然后在代码中通过“序列化函数”进行解码,这个时候如果去构造这个byte类型变量就会比较麻烦。简单的做法是,Mock“序列化函数”,返回序列化后的结构体。例如:
Mock(json.Unmarshal).To(func(data []byte, models interface{})error{
data :=&MockType{
Id:1,
ItemId:0,}
mx := models.(*MockType)*mx =*data
returnnil}).Build()
5. 对实参进行赋值,使用引用的方式来实现
6. Mock缓存Redis 原理类似与Mock数据库
版权归原作者 linrongchen 所有, 如有侵权,请联系我们删除。