起因
周五在做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函数里面。