0


Go语言关于单元测试中mock的一些使用

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数据库

标签: golang 单元测试

本文转载自: https://blog.csdn.net/weixin_43742062/article/details/125135587
版权归原作者 linrongchen 所有, 如有侵权,请联系我们删除。

“Go语言关于单元测试中mock的一些使用”的评论:

还没有评论