You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

43 lines
993 B

2 years ago
package recovery
import (
"context"
"fmt"
"testing"
"github.com/go-kratos/kratos/v2/errors"
"github.com/go-kratos/kratos/v2/log"
)
func TestOnce(t *testing.T) {
defer func() {
if recover() != nil {
t.Error("fail")
}
}()
next := func(ctx context.Context, req interface{}) (interface{}, error) {
panic("panic reason")
}
_, e := Recovery()(next)(context.Background(), "panic")
t.Logf("succ and reason is %v", e)
}
func TestNotPanic(t *testing.T) {
next := func(ctx context.Context, req interface{}) (interface{}, error) {
return req.(string) + "https://go-kratos.dev", nil
}
_, e := Recovery(WithHandler(func(ctx context.Context, req, err interface{}) error {
return errors.InternalServer("RECOVERY", fmt.Sprintf("panic triggered: %v", err))
}))(next)(context.Background(), "notPanic")
if e != nil {
t.Errorf("e isn't nil")
}
}
// Deprecated: Remove this test with WithLogger method.
func TestWithLogger(t *testing.T) {
_ = WithLogger(log.DefaultLogger)
}