## 起因
周五在做```go test```测试时,碰到个问题,我要对一个```xxx```函数写测试样例,然而它的首字母是小写的,没有导出,单元测试过不去,而这个```xxx```函数外面还有一个```YYY```函数首字母是大写的,但要经过很长的逻辑才能到```xxx```函数。这时我又要完成对```xxx```函数进行测试,又不想经过```YYY```函数走逻辑,该怎么办呢?
## 实现过程
首先,绝对不能做的事:
- 将```xxx```函数改为首字母大写的```Xxx```函数
原因:很多地方都在调这个函数,你改了这一处只满足你这次的测试,那其他基本业务流程也就崩了。
我目前是在```test```文件夹里新建了一个```xxx_test.go```测试文件,样子长这样
```go
package test
func Testxxx(t testing.T){
control.XXX()
}
```
由于```xxx```函数是在```control```包里,因此我要在```control```包下建一个```export.go```文件
```go
package control
var XXX = xxx
```
然后执行```go test```命令,它会遍历```control```包下的所有文件,这时```export.go```文件 里的```var XXX = xxx```就起到了一个桥梁作用。
这时测试的时候就不需要再经过```YYY```的逻辑走到```xxx```函数里面。
## 参考文章
[付费用户「每日一学」2019-06-14:你应该知道的单元测试小技巧](https://studygolang.com/topics/9332)
有疑问加站长微信联系(非本文作者))