我正在使用err113
作为golangci-lint
的一部分。
它在提示...
foo_test.go:55:61: err113: do not define dynamic errors, use wrapped static errors instead: "errors.New(\"repo gave err\")" (goerr113)
repoMock.EXPECT().Save(gomock.Eq(&foooBarBar)).Return(nil, errors.New("repo gave err")),
^
foo_test.go:22:42: err113: do not define dynamic errors, use wrapped static errors instead: "errors.New(\"oops\")" (goerr113)
repoMock.EXPECT().FindAll().Return(nil, errors.New("oops"))
^
解决此问题的最佳方法是什么?
引用https://github.com/Djarvur/go-err113
Also, any call of errors.New() and fmt.Errorf() methods are reported except the calls used to initialise package-level variables and the fmt.Errorf() calls wrapping the other errors.
我正在尝试为此举一个惯用的例子。
最佳答案
根据建议声明包级变量:
var repoGaveErr = errors.New("repo gave err")
func someFunc() {
repoMock.EXPECT().Save(gomock.Eq(&foooBarBar)).Return(nil, repoGaveErr)
}
每次调用error.New都会分配一个新的唯一错误值。应用程序通过声明包级变量来创建表示错误的单个值。
单一值(value)有两个动机:
值io.EOF是一个典型示例。
关于go - linter err113 : do not define dynamic errors,改用包装的静态错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62291709/