diff --git a/assert/assertions.go b/assert/assertions.go index 0ed1eed09..3353b33a2 100644 --- a/assert/assertions.go +++ b/assert/assertions.go @@ -2202,11 +2202,17 @@ func ErrorAs(t TestingT, err error, target interface{}, msgAndArgs ...interface{ return true } + expectedText := reflect.ValueOf(target).Elem().Type().String() + if err == nil { + return Fail(t, fmt.Sprintf("An error is expected but got nil.\n"+ + "expected: %s", expectedText), msgAndArgs...) + } + chain := buildErrorChainString(err, true) return Fail(t, fmt.Sprintf("Should be in error chain:\n"+ "expected: %s\n"+ - "in chain: %s", reflect.ValueOf(target).Elem().Type(), chain, + "in chain: %s", expectedText, chain, ), msgAndArgs...) } diff --git a/assert/assertions_test.go b/assert/assertions_test.go index 16dc2587d..77a151856 100644 --- a/assert/assertions_test.go +++ b/assert/assertions_test.go @@ -3402,9 +3402,8 @@ func TestErrorAs(t *testing.T) { err: nil, result: false, resultErrMsg: "" + - "Should be in error chain:\n" + - "expected: *assert.customError\n" + - "in chain: \n", + "An error is expected but got nil.\n" + + `expected: *assert.customError` + "\n", }, { err: fmt.Errorf("abc: %w", errors.New("def")),