refactor: 统一错误消息数据源,优化错误码与映射表管理
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 4m36s
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 4m36s
主要改动: - 改造 errors.New() 和 Wrap() 函数签名为可变参数,优先使用 errorMessages 映射表 - 添加 allErrorCodes 注册表和 init() 启动时校验,确保错误码与映射表一致 - 添加 TestAllCodesHaveMessages 和 TestNoOrphanMessages 测试防止映射表腐化 - 清理 109 处与映射表一致的冗余硬编码(service 层) - 保留业务特定消息覆盖能力 新增 API 用法: - errors.New(errors.CodeUnauthorized) // 使用映射表默认消息 - errors.New(errors.CodeNotFound, "提现申请不存在") // 覆盖为自定义消息
This commit is contained in:
@@ -135,6 +135,35 @@ func TestGetLogLevel(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestAllCodesHaveMessages(t *testing.T) {
|
||||
var missing []int
|
||||
for _, code := range allErrorCodes {
|
||||
if _, ok := errorMessages[code]; !ok {
|
||||
missing = append(missing, code)
|
||||
}
|
||||
}
|
||||
if len(missing) > 0 {
|
||||
t.Errorf("以下错误码缺少映射消息: %v", missing)
|
||||
}
|
||||
}
|
||||
|
||||
func TestNoOrphanMessages(t *testing.T) {
|
||||
codeSet := make(map[int]bool)
|
||||
for _, code := range allErrorCodes {
|
||||
codeSet[code] = true
|
||||
}
|
||||
|
||||
var orphan []int
|
||||
for code := range errorMessages {
|
||||
if !codeSet[code] {
|
||||
orphan = append(orphan, code)
|
||||
}
|
||||
}
|
||||
if len(orphan) > 0 {
|
||||
t.Errorf("以下错误码在 errorMessages 中存在但未在 allErrorCodes 中注册: %v", orphan)
|
||||
}
|
||||
}
|
||||
|
||||
// BenchmarkGetHTTPStatus 基准测试 HTTP 状态码映射性能
|
||||
func BenchmarkGetHTTPStatus(b *testing.B) {
|
||||
codes := []int{
|
||||
|
||||
Reference in New Issue
Block a user