mirror of
https://github.com/go-kratos/kratos.git
synced 2025-07-17 01:42:34 +02:00
test(errors): add errors test (#1739)
* test(errors): add errors test * fix lint
This commit is contained in:
@ -6,6 +6,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
"google.golang.org/grpc/codes"
|
"google.golang.org/grpc/codes"
|
||||||
"google.golang.org/grpc/status"
|
"google.golang.org/grpc/status"
|
||||||
"google.golang.org/grpc/test/grpc_testing"
|
"google.golang.org/grpc/test/grpc_testing"
|
||||||
@ -57,4 +58,45 @@ func TestError(t *testing.T) {
|
|||||||
if se2.Code != http.StatusBadRequest {
|
if se2.Code != http.StatusBadRequest {
|
||||||
t.Errorf("convert code err, got %d want %d", UnknownCode, http.StatusBadRequest)
|
t.Errorf("convert code err, got %d want %d", UnknownCode, http.StatusBadRequest)
|
||||||
}
|
}
|
||||||
|
assert.Nil(t, FromError(nil))
|
||||||
|
e := FromError(errors.New("test"))
|
||||||
|
assert.Equal(t, e.Code, int32(UnknownCode))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestIs(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
e *Error
|
||||||
|
err error
|
||||||
|
want bool
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "true",
|
||||||
|
e: &Error{Reason: "test"},
|
||||||
|
err: New(http.StatusNotFound, "test", ""),
|
||||||
|
want: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "false",
|
||||||
|
e: &Error{Reason: "test"},
|
||||||
|
err: errors.New("test"),
|
||||||
|
want: false,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
if ok := tt.e.Is(tt.err); ok != tt.want {
|
||||||
|
t.Errorf("Error.Error() = %v, want %v", ok, tt.want)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestOther(t *testing.T) {
|
||||||
|
assert.Equal(t, Code(nil), 200)
|
||||||
|
assert.Equal(t, Code(errors.New("test")), UnknownCode)
|
||||||
|
assert.Equal(t, Reason(errors.New("test")), UnknownReason)
|
||||||
|
err := Errorf(10001, "test code 10001", "message")
|
||||||
|
assert.Equal(t, Code(err), 10001)
|
||||||
|
assert.Equal(t, Reason(err), "test code 10001")
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
package errors
|
package errors
|
||||||
|
|
||||||
import "testing"
|
import (
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
func TestTypes(t *testing.T) {
|
func TestTypes(t *testing.T) {
|
||||||
var (
|
var (
|
||||||
@ -12,6 +14,8 @@ func TestTypes(t *testing.T) {
|
|||||||
Conflict("reason_409", "message_409"),
|
Conflict("reason_409", "message_409"),
|
||||||
InternalServer("reason_500", "message_500"),
|
InternalServer("reason_500", "message_500"),
|
||||||
ServiceUnavailable("reason_503", "message_503"),
|
ServiceUnavailable("reason_503", "message_503"),
|
||||||
|
GatewayTimeout("reason_504", "message_504"),
|
||||||
|
ClientClosed("reason_499", "message_499"),
|
||||||
}
|
}
|
||||||
output = []func(error) bool{
|
output = []func(error) bool{
|
||||||
IsBadRequest,
|
IsBadRequest,
|
||||||
@ -21,6 +25,8 @@ func TestTypes(t *testing.T) {
|
|||||||
IsConflict,
|
IsConflict,
|
||||||
IsInternalServer,
|
IsInternalServer,
|
||||||
IsServiceUnavailable,
|
IsServiceUnavailable,
|
||||||
|
IsGatewayTimeout,
|
||||||
|
IsClientClosed,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
23
errors/wrap_test.go
Normal file
23
errors/wrap_test.go
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
package errors
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
type mockErr struct{}
|
||||||
|
|
||||||
|
func (*mockErr) Error() string {
|
||||||
|
return "mock error"
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestWarp(t *testing.T) {
|
||||||
|
var err error = &mockErr{}
|
||||||
|
err2 := fmt.Errorf("wrap %w", err)
|
||||||
|
assert.Equal(t, err, Unwrap(err2))
|
||||||
|
assert.True(t, Is(err2, err))
|
||||||
|
err3 := &mockErr{}
|
||||||
|
assert.True(t, As(err2, &err3))
|
||||||
|
}
|
Reference in New Issue
Block a user