假设我有一个函数,它为位于特定路径
的文件返回base64
编码字符串。
func getFile(path string) (string, error) {
imgFile, err := ioutil.ReadFile(path)
if err != nil {
return "", fmt.Errorf("Error opening image file: %s", err)
}
base64 := base64.StdEncoding.EncodeToString(imgFile)
return base64, nil
}
现在,我正在为此函数编写表驱动测试,它们现在看起来像这样。
func TestGetFile(t *testing.T) {
type getFileTest struct {
Path string
Base64 string
Err error
}
getFileTests := []getFileTest{
{"", "", nil},
}
for _, td := range getFileTests {
base64, err := getFile(td.Path)
if err != nil {
t.Errorf("TestGetFile: Error calling getFile: %s", err)
}
if base64 != td.Base64 {
t.Errorf("TestGetFile: Return values from getFile is not expected: Expected: %s, Returned: %s", td.Base64, base64)
}
}
}
现在,当前测试失败:-
test.go:18: TestGetFile: Error calling getFile: Error opening image file: open : no such file or directory
当我将空路径传递给 getFile
时,如何断言我得到了正确的错误?
最佳答案
os
包提供了 os.IsNotExist
检查各种文件存在错误的函数:
if err != nil && os.IsNotExist(err) {
fmt.Println("file doesn't exist")
}
关于unit-testing - 仅使用 golang 中的标准库断言特定错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37659195/