-4

我正在尝试使用 GoMonkey 模拟一个函数,但我发现它失败了,因为编译器会在程序编译时内联这个函数,所以 GoMonkey 无法模拟它。

那么如何模拟这个函数或者如何模拟其他成员的私有函数呢?

测试代码如下:

        patches := gomonkey.ApplyFunc(time.ParseInLocation, func(format string, timeStr string, cstSh *time.Location) (time.Time,error) {
            return time.Time{},errors.New("error")
        })
        defer patches.Reset()
        resp:= Example("")
        So(resp, ....)

模拟函数

...
t, err := time.ParseInLocation(format, timeStr, cstSh)
...
4

1 回答 1

0

您可以防止 go 编译器使用 pragma 内联函数,//go:noinline但根据之前的回复,如果可能的话,我会避免使用模拟。此外,使用这些 pragma 也不是一个特别好的主意。

于 2021-08-03T08:50:57.040 回答