error模块代码完善

This commit is contained in:
zchh 2021-01-17 22:42:49 +08:00
parent 424817e9a1
commit d47a95df8d
3 changed files with 165 additions and 8 deletions

View File

@ -6,6 +6,6 @@ const (
SessionSessionStartError Code = 5001001
)
var strToCode = map[string]Code{
`"SESSION_MODULE_SESSION_START_ERROR"`: SessionSessionStartError,
var CodeToStr = map[Code]string{
SessionSessionStartError : `"SESSION_MODULE_SESSION_START_ERROR"`,
}

View File

@ -6,6 +6,9 @@ import (
"strconv"
)
// The `Error`type defines custom error for Beego. It is used by every module
// in Beego. Each `Error` message contains three pieces of data: error code,
// error message. More docs http://beego.me/docs/module/error.md
type Error struct {
Code codes.Code
Msg string
@ -26,21 +29,24 @@ func Errorf(c codes.Code, format string, a ...interface{}) error {
return Err(c, fmt.Sprintf(format, a...))
}
// Error returns formatted message for user.
func (e *Error) Error() string {
codeSrt := strconv.FormatUint(uint64(e.GetCode()), 10)
return fmt.Sprintf("beego error: code = %s desc = %s", codeSrt, e.GetMessage())
}
func (x *Error) GetCode() codes.Code {
if x != nil {
return x.Code
// GetCode returns Error's Code
func (e *Error) GetCode() codes.Code {
if e != nil {
return e.Code
}
return 0
}
func (x *Error) GetMessage() string {
if x != nil {
return x.Msg
// GetMessage returns Error's Msg.
func (e *Error) GetMessage() string {
if e != nil {
return e.Msg
}
return ""
}

151
core/error/error_test.go Normal file
View File

@ -0,0 +1,151 @@
package error
import (
"github.com/beego/beego/v2/core/codes"
"reflect"
"testing"
)
func TestErr(t *testing.T) {
type args struct {
c codes.Code
msg string
}
tests := []struct {
name string
args args
wantErr bool
}{
// TODO: Add test cases.
{name: "1", args: args{codes.SessionSessionStartError, codes.CodeToStr[codes.SessionSessionStartError]}, wantErr: true},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if err := Err(tt.args.c, tt.args.msg); (err != nil) != tt.wantErr {
t.Errorf("Err() error = %v, wantErr %v", err, tt.wantErr)
}
})
}
}
func TestError_Error(t *testing.T) {
type fields struct {
Code codes.Code
Msg string
}
tests := []struct {
name string
fields fields
want string
}{
// TODO: Add test cases.
{name: "1", fields: fields{codes.SessionSessionStartError, codes.CodeToStr[codes.SessionSessionStartError]}, want: "beego error: code = 5001001 desc = \"SESSION_MODULE_SESSION_START_ERROR\""},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
e := &Error{
Code: tt.fields.Code,
Msg: tt.fields.Msg,
}
if got := e.Error(); got != tt.want {
t.Errorf("Error() = %v, want %v", got, tt.want)
}
})
}
}
func TestError_GetCode(t *testing.T) {
type fields struct {
Code codes.Code
Msg string
}
tests := []struct {
name string
fields fields
want codes.Code
}{
// TODO: Add test cases.
{name: "1", fields: fields{codes.SessionSessionStartError, codes.CodeToStr[codes.SessionSessionStartError]}, want: codes.SessionSessionStartError},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
e := &Error{
Code: tt.fields.Code,
Msg: tt.fields.Msg,
}
if got := e.GetCode(); got != tt.want {
t.Errorf("GetCode() = %v, want %v", got, tt.want)
}
})
}
}
func TestError_GetMessage(t *testing.T) {
type fields struct {
Code codes.Code
Msg string
}
tests := []struct {
name string
fields fields
want string
}{
// TODO: Add test cases.
{name: "1", fields: fields{codes.SessionSessionStartError, codes.CodeToStr[codes.SessionSessionStartError]}, want: codes.CodeToStr[codes.SessionSessionStartError]},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
e := &Error{
Code: tt.fields.Code,
Msg: tt.fields.Msg,
}
if got := e.GetMessage(); got != tt.want {
t.Errorf("GetMessage() = %v, want %v", got, tt.want)
}
})
}
}
func TestErrorf(t *testing.T) {
type args struct {
c codes.Code
format string
a []interface{}
}
tests := []struct {
name string
args args
wantErr bool
}{
// TODO: Add test cases.
{name: "1", args: args{codes.SessionSessionStartError, "%s", []interface{}{codes.CodeToStr[codes.SessionSessionStartError]}}},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if err := Errorf(tt.args.c, tt.args.format, tt.args.a...); (err != nil) != tt.wantErr {
t.Errorf("Errorf() error = %v, wantErr %v", err, tt.wantErr)
}
})
}
}
func TestNew(t *testing.T) {
type args struct {
c codes.Code
msg string
}
tests := []struct {
name string
args args
want *Error
}{
// TODO: Add test cases.
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := New(tt.args.c, tt.args.msg); !reflect.DeepEqual(got, tt.want) {
t.Errorf("New() = %v, want %v", got, tt.want)
}
})
}
}