写了一段单元测试的代码,在 vim 中提示错误
func TestGenSlug(t *testing.T) {
assert.Equal(t, "hello-world", genSlug("Hello World"))
}
错误信息为:
[gopls] cannot use t (variable of type *testing.T) as assert.TestingT value in argument to assert.Equal:
wrong type for method Errorf (have func(format string, args ...invalid type), want func(format string, args ...interface{})) [Error]
我没有看出来有什么问题,而且使用 go test 也能正常执行测试程序。只是 vim 中持续报错。
网上搜了一下说是 gopls 版本过低,不支持 go 1.18 版本。
查看 gopls 版本
> gopls version
golang.org/x/tools/gopls v0.6.11
golang.org/x/tools/gopls@v0.6.11 h1:7S2k0xuVYc3secjy2uz0n+fGYxGJU6gXsLOmQ/r1HoI=
升级 gopls 到最新版本
> go install golang.org/x/tools/gopls@latest
> gopls version
golang.org/x/tools/gopls v0.9.1
golang.org/x/tools/gopls@v0.9.1 h1:SigsTL4Hpv3a6b/a7oPCLRv5QUeSM6PZNdta1oKY4B0=
升级方法二:
由于我是在 vim-go 中使用 gopls,实际上还可以通过在 vim 中执行
GoUpdateBinaries gopls
来升级。
重启 gopls 服务
https://github.com/fatih/vim-go/issues/2550
vim 中执行:
:call go#lsp#Restart()
退出 vim 重新打开就正常了。
参考
https://github.com/stretchr/testify/issues/1167
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式