基于 Golang 语言,写单元测试,使用gomonkey
对于某个函数进行 Mock,遇到如下问题:
Patch
不生效,Mock 失败;Patch
生效,Mock 成功。说实话,看到这样的现象感觉很怪异,那么,为什么会出现这个问题呢?
在网上搜了搜该问题及现象,发现该问题的原因是,
gomonkey
的Patch
生效,需要关闭编译器对代码的自动优化但是在「正常模式」下,是没有关闭编译器对代码的自动优化的;而在「Debug模式」下,dlv
默认关闭了编译器对代码的自动优化。
因此,想要保证gomonkey
的Patch
生效,需要关闭编译器的自动优化功能。有两种方法,
go test -gcflags "all=-N -l"
,直接在go test
命令行后面加上-gcflags "all=-N -l"
参数;Go Test
的配置项Go tool arguments
中,配置-gcflags "all=-N -l"
参数。扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有