gomock

go get github.com/golang/mock/mockgen@v1.4.3



正常安装完成后,可在$GOPATH/bin 目录下找到 mockgen



自动生成mock 代码
只有Interface 类型才能生成mock,因此我们要先定义接口



那么可以直接通过mockgen 指令生成mock 代码:
mockgen -source=studentinterface.go -destination=studentmock.go

ctrl.Finish 在go 1.14 及之后的版本不再需要手动触发
Mock 写好了,当然接下来就是调用了,紧接着刚才的mock,直接调用即可:



。但是如果需要测试的入参取值范围比较大,每种取值都mock 一次就有点麻烦了。可通过DoAndReturn 来设置特定取值范围的返回值:



默认一个mock 只能调用一次,多次调用我们需要通过 time/AnyTime 来配置:



比如需要测试一个添加接口的完整功能:查 -> 插入 -> 查。查询会调用两次,但是入参不同,有顺序性。可通过mock.InOrder方法设置:



测试用例也需要设置并发+合并多个测试用例结果后总和处理。这种情况下,为了防止测试用例执行过久,我们可以结合context来实现超时退出goroutine。



Any:
当我们对需要测试方法的入参没有要求,只是想跑下单元测试过程的话,可直接在Expect 后设置Any,表示可以接收任何入参



https://blog.csdn.net/xiaoliizi/article/details/107736758



Category golang