errors_test.go 881 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package fserr
  2. import (
  3. "errors"
  4. "fmt"
  5. "testing"
  6. )
  7. var testErr = newError(ErrUnknownCode, "测试错误")
  8. func TestErrors(t *testing.T) {
  9. fmt.Printf("测试错误打印: %+v\n", testErr)
  10. err := Func1()
  11. fmt.Printf("测试Func3错误打印: %+v\n", err)
  12. err = testErr.WithStack()
  13. fmt.Printf("测试WithStack错误打印: %+v\n", err)
  14. isRight := errors.Is(err, testErr)
  15. if !isRight {
  16. t.Fatal("Is错误")
  17. }
  18. targetErr := &Error{}
  19. asRight := errors.As(err, &targetErr)
  20. if !asRight {
  21. t.Fatal("As错误")
  22. }
  23. fmt.Printf("测试目标错误打印: %+v\n", targetErr)
  24. if !errors.Is(err, targetErr) {
  25. t.Fatal("目标错误和原始错误不一致")
  26. }
  27. if err != targetErr {
  28. t.Fatal("目标错误和原始错误不一致")
  29. }
  30. }
  31. func Func1() error {
  32. return Func2()
  33. }
  34. func Func2() error {
  35. return Func3()
  36. }
  37. func Func3() error {
  38. return testErr.WithStack()
  39. }