gpt4 book ai didi

unit-testing - (*testing.common).Errorf 不支持错误包装指令 %w

转载 作者:行者123 更新时间:2023-12-05 02:35:35 26 4
gpt4 key购买 nike

我正在克隆一个私有(private)的 go 项目。

在代码编辑器和运行 golangci-lint 时出现以下错误。

code editor screenshot error

golangci-lint screenshot error

示例代码是这样的:

func TestAService(t *testing.T) {
...
err := service.AService()
if err != nil {
t.Errorf("Error on executing the test cases %w", err)
}
}

go项目在其他笔记本上运行正常,但是我用的那台出现这个错误。

两台笔记本电脑使用的go版本是:go 1.17

最佳答案

您发布的屏幕截图不是错误,它们是来自您的 IDE 的关于代码中潜在问题的警告。

但是 testing.T.Errorf 不支持 %w(它与 fmt.Sprintf 的作用和不作用相同' t 接受),所以警告是正确的。

这些消息不会阻止您的代码构建和运行,但在出现错误的情况下,字符串的格式将被关闭。

如果您运行代码并出现错误,您将得到类似这样的结果(%!w 之后的部分将取决于您拥有的确切错误值)。

Error on executing the test cases %!w(*errors.errorString=&{some error})

您收到的特定警告可能是新的 1 ,但我不相信这个错误代码在任何版本的 go 中都能令人满意地工作。当然,由于大多数测试错误通常是看不到的(因为测试通过了),所以这个缺陷可能一直不可见。

修复方法是将 %w(换行错误)替换为 %v(默认方式的格式对象,对于错误将使用其字符串形式).


1 您看到的 lint 消息来自“go tool vet”,由 this changelist 创建这是在 2021 年 5 月提交的。可能在您的另一台机器上,您正在使用此工具的早期版本进行 linting。

关于unit-testing - (*testing.common).Errorf 不支持错误包装指令 %w,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70505459/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com