为什么要进行单元测试?
在没工作之前,说实话没怎么写过单元测试,很多情况下就是一边写代码,一边运行,用 fmt.Println() 打印变量,再稍微复杂一点的也许会用 dlv 去 debug 代码,找出问题。
但是在做公司做大型项目时就会发现,你根本就没办法把项目跑起来,这个时候你只能通过写单元测试去看自己的逻辑对不对。
当然仍旧会出现一个问题,当你的功能中又调用了其他的接口,但这个接口在你当前的环境中是没办法正常调用的,比如数据库连接,文件 I/O。网络I/O 等。这个时候就需要一个 好用的 mock 库了,简单来说就是用 mock 对象模拟依赖项的行为,这里我推荐使用 gomonkey。
从另一个角度讲,为什么需要单元测试呢,因为我们一般项目都有覆盖率的要求,写单测当然是也是为了提高代码覆盖率咯,不然代码都无法提交到 gitlab 上。
gomonkey 入门
安装 gomonkey
go get github.com/agiledragon/gomonkey
gomonkey 常见用法
mock 一个函数
mock 一个成员方法
其他用法可参考官方文档
业务代码如下:
package mock
import (
"encoding/json"
"io/ioutil&