golang 打桩,mock 数据怎么玩?

本文介绍了如何在Golang中使用gomock进行数据打桩和mock,解决服务依赖导致的测试问题。文章详细阐述了gomock的作用、使用方法,包括mock文件生成和具体应用,并探讨了使用gomock的好处。
摘要由CSDN通过智能技术生成

工作中,很多公司都要求效能,要求自动化测试

实际落地的过程中发现,要做单元测试,自动化测试,可能当前这个服务会依赖其他服务的数据,接口等等

那么单测或者自动化的过程中,就可能会由于其他服务的原因或者环境因素导致测试失败,或者阻塞测试

这是一个问题,必须得解决,我们可以采用 golang 自带的 mock 工具来完成,可以在一些必要的地方进行数据打桩,mock 数据

gomock 是什么?

是官方提供的 一个 mock 数据的 框架

官方还提供了 mockgen 工具用来帮助 我们 生成测试代码

github 上项目地址是:https://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

  • 编写一个 接口,里面有一个 GetInfo() string 方法,模拟获取信息
package myfunc

type MyFunc interface {
   
	GetInfo() string
}

myuser.go

  • 调用 myfunc.go 中的方法,调用接口获取信息
package myfunc

func getUser(m MyFunc) string {
   
	user := m.GetInfo()
	return user
}

mock 文件的生成

mock_myfunc.go

这个文件不是我们自己写的,是通过 mockgen 工具生成的 ,生成方式如下:

在 myfunc.go 的同级目录下执行如下语句,填入 source 源文件 和 目标文件即可生成新的 mock 文件

mockgen -source=myfunc.go -destination
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值