起因
周五在做go test
测试时,碰到个问题,我要对一个xxx
函数写测试样例,然而它的首字母是小写的,没有导出,单元测试过不去,而这个xxx
函数外面还有一个YYY
函数首字母是大写的,但要经过很长的逻辑才能到xxx
函数。这时我又要完成对xxx
函数进行测试,又不想经过YYY
函数走逻辑,该怎么办呢?
实现过程
首先,绝对不能做的事:
- 将
xxx
函数改为首字母大写的Xxx
函数
原因:很多地方都在调这个函数,你改了这一处只满足你这次的测试,那其他基本业务流程也就崩了。
我目前是在test
文件夹里新建了一个xxx_test.go
测试文件,样子长这样
1 | package test |
由于xxx
函数是在control
包里,因此我要在control
包下建一个export.go
文件
1 | package control |
然后执行go test
命令,它会遍历control
包下的所有文件,这时export.go
文件 里的var XXX = xxx
就起到了一个桥梁作用。
这时测试的时候就不需要再经过YYY
的逻辑走到xxx
函数里面。