你将如何为一个返回值可能是 nil 或具体值的函数编写测试?我不关心实际值本身,我只关心该值是否已返回。
type CustomType struct{}
func TestSomeFunc(t *testing.T) {
case := map[string]struct {
Input string
Expected *CustomType // expected result
Error error // expected error value
} {
"test case 1":
"input",
&CustomType{}, // could be nil or a concrete value
nil,
"test case 2":
"input",
nil, // could be nil or a concrete value
ErrSomeError,
}
actual, err := SomeFunc(case.Input)
if (actual != case.Expected) {
t.Fatalf(...)
}
}
并且要测试的功能可能类似于:
func SomeFunc(input string) (*CustomType, error) {
foo, err := doSomething()
if err != nil {
return nil, err
}
return foo, nil
}
我想我想要的逻辑是:
if ((case.Expected != nil && actual == nil) ||
(case.Expected == nil && actual != nil)) {
t.Fatalf(...)
}
有没有更好的方法来断言存在而不是比较具体类型?
斯蒂芬大帝
相关分类