fix: 修复后端配置加载测试失败
- 修复 viper SafeWriteConfig 与 SetConfigFile 不兼容问题 - 将 SafeWriteConfig() 替换为 SafeWriteConfigAs(configPath) - 绕过 viper 的 configPaths 检查 - 调整 Makefile 测试命令分类 - backend-test: 仅运行后端核心测试 - backend-test-all: 运行全部后端测试(含 desktop) - desktop-test: 单独运行桌面应用测试 - 同步 config-management 和 test-coverage 规范
This commit is contained in:
12
Makefile
12
Makefile
@@ -1,11 +1,11 @@
|
|||||||
.PHONY: all dev build test lint clean \
|
.PHONY: all dev build test lint clean \
|
||||||
backend-build backend-run backend-dev backend-test backend-test-unit backend-test-integration backend-test-coverage \
|
backend-build backend-run backend-dev backend-test backend-test-all backend-test-unit backend-test-integration backend-test-coverage \
|
||||||
backend-lint backend-clean backend-deps backend-generate \
|
backend-lint backend-clean backend-deps backend-generate \
|
||||||
backend-db-up backend-db-down backend-db-status backend-db-create \
|
backend-db-up backend-db-down backend-db-status backend-db-create \
|
||||||
test-mysql-up test-mysql-down test-mysql test-mysql-quick \
|
test-mysql-up test-mysql-down test-mysql test-mysql-quick \
|
||||||
frontend-build frontend-dev frontend-test frontend-test-watch frontend-test-coverage frontend-test-e2e frontend-lint frontend-clean \
|
frontend-build frontend-dev frontend-test frontend-test-watch frontend-test-coverage frontend-test-e2e frontend-lint frontend-clean \
|
||||||
desktop-build desktop-build-mac desktop-build-win desktop-build-linux \
|
desktop-build desktop-build-mac desktop-build-win desktop-build-linux \
|
||||||
desktop-dev desktop-package-mac desktop-package-win desktop-package-linux desktop-clean \
|
desktop-dev desktop-test desktop-package-mac desktop-package-win desktop-package-linux desktop-clean \
|
||||||
desktop-prepare-frontend desktop-prepare-embedfs
|
desktop-prepare-frontend desktop-prepare-embedfs
|
||||||
|
|
||||||
# ============================================
|
# ============================================
|
||||||
@@ -19,7 +19,7 @@ dev:
|
|||||||
build: backend-build frontend-build
|
build: backend-build frontend-build
|
||||||
@echo "✅ Build complete"
|
@echo "✅ Build complete"
|
||||||
|
|
||||||
test: backend-test frontend-test
|
test: backend-test desktop-test frontend-test
|
||||||
@echo "✅ All tests passed"
|
@echo "✅ All tests passed"
|
||||||
|
|
||||||
lint: backend-lint frontend-lint
|
lint: backend-lint frontend-lint
|
||||||
@@ -41,6 +41,9 @@ backend-dev:
|
|||||||
cd backend && go run ./cmd/server
|
cd backend && go run ./cmd/server
|
||||||
|
|
||||||
backend-test:
|
backend-test:
|
||||||
|
cd backend && go test ./internal/... ./pkg/... ./tests/... ./cmd/server/... -v
|
||||||
|
|
||||||
|
backend-test-all:
|
||||||
cd backend && go test ./... -v
|
cd backend && go test ./... -v
|
||||||
|
|
||||||
backend-test-unit:
|
backend-test-unit:
|
||||||
@@ -179,6 +182,9 @@ desktop-dev: desktop-prepare-frontend desktop-prepare-embedfs
|
|||||||
@echo "🖥️ Starting desktop app in dev mode..."
|
@echo "🖥️ Starting desktop app in dev mode..."
|
||||||
cd backend && go run ./cmd/desktop
|
cd backend && go run ./cmd/desktop
|
||||||
|
|
||||||
|
desktop-test:
|
||||||
|
cd backend && go test ./cmd/desktop/... -v
|
||||||
|
|
||||||
desktop-package-mac:
|
desktop-package-mac:
|
||||||
./scripts/build/package-macos.sh
|
./scripts/build/package-macos.sh
|
||||||
|
|
||||||
|
|||||||
@@ -231,7 +231,7 @@ func setupConfigFile(v *viper.Viper, configPath string) error {
|
|||||||
return appErrors.Wrap(appErrors.ErrInternal, err)
|
return appErrors.Wrap(appErrors.ErrInternal, err)
|
||||||
}
|
}
|
||||||
// 配置文件不存在,创建默认配置文件
|
// 配置文件不存在,创建默认配置文件
|
||||||
writeErr := v.SafeWriteConfig()
|
writeErr := v.SafeWriteConfigAs(configPath)
|
||||||
if writeErr == nil {
|
if writeErr == nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -169,15 +169,15 @@
|
|||||||
|
|
||||||
- **WHEN** 应用启动
|
- **WHEN** 应用启动
|
||||||
- **THEN** SHALL 按以下顺序加载配置:
|
- **THEN** SHALL 按以下顺序加载配置:
|
||||||
1. 解析 CLI 参数(获取 --config 路径)
|
1. 解析 CLI 参数(获取 --config 路径)
|
||||||
2. 初始化配置管理器
|
2. 初始化配置管理器
|
||||||
3. 设置默认值
|
3. 设置默认值
|
||||||
4. 绑定 CLI 参数
|
4. 绑定 CLI 参数
|
||||||
5. 绑定环境变量
|
5. 绑定环境变量
|
||||||
6. 读取配置文件
|
6. 读取配置文件(不存在时自动创建)
|
||||||
7. 反序列化到结构体
|
7. 反序列化到结构体
|
||||||
8. 验证配置
|
8. 验证配置
|
||||||
9. 打印配置摘要
|
9. 打印配置摘要
|
||||||
|
|
||||||
#### Scenario: 加载失败处理
|
#### Scenario: 加载失败处理
|
||||||
|
|
||||||
|
|||||||
@@ -31,16 +31,27 @@
|
|||||||
- **THEN** SHALL 测试请求转换、响应转换、流式转换
|
- **THEN** SHALL 测试请求转换、响应转换、流式转换
|
||||||
- **THEN** SHALL 验证转换的准确性和完整性
|
- **THEN** SHALL 验证转换的准确性和完整性
|
||||||
|
|
||||||
#### Scenario: config 加载管道集成测试
|
#### Scenario: LoadConfigFromPath 默认值验证
|
||||||
|
|
||||||
- **WHEN** 运行 config 加载管道的集成测试
|
- **WHEN** 运行 config 加载管道的集成测试
|
||||||
- **THEN** SHALL 验证 LoadConfigFromPath 正确加载默认值
|
- **THEN** SHALL 验证 LoadConfigFromPath 正确加载默认值
|
||||||
- **THEN** SHALL 验证环境变量(`NEX_` 前缀)覆盖默认值
|
|
||||||
- **THEN** SHALL 验证 YAML 配置文件正确读取
|
- **THEN** SHALL 验证 YAML 配置文件正确读取
|
||||||
- **THEN** SHALL 验证优先级链:CLI 参数 > 环境变量 > YAML 文件 > 默认值
|
- **THEN** SHALL 验证优先级链:CLI 参数 > 环境变量 > YAML 文件 > 默认值
|
||||||
- **THEN** SHALL 验证首次启动自动创建配置文件
|
- **THEN** SHALL 验证首次启动自动创建配置文件
|
||||||
- **THEN** SHALL 验证 SaveConfig 后重新 LoadConfig 数据一致
|
- **THEN** SHALL 验证 SaveConfig 后重新 LoadConfig 数据一致
|
||||||
|
|
||||||
|
#### Scenario: 环境变量覆盖验证
|
||||||
|
|
||||||
|
- **WHEN** 设置 `NEX_SERVER_PORT=9000` 和 `NEX_LOG_LEVEL=debug`
|
||||||
|
- **THEN** SHALL 成功加载
|
||||||
|
- **THEN** 配置值 SHALL 反映环境变量覆盖
|
||||||
|
|
||||||
|
#### Scenario: 自动创建配置文件验证
|
||||||
|
|
||||||
|
- **WHEN** 调用 `LoadConfigFromPath` 并指向不存在的文件路径
|
||||||
|
- **THEN** SHALL 成功加载(不返回 `missing configuration for 'configPath'` 错误)
|
||||||
|
- **THEN** SHALL 返回默认配置对象
|
||||||
|
|
||||||
#### Scenario: handler 错误分支测试
|
#### Scenario: handler 错误分支测试
|
||||||
|
|
||||||
- **WHEN** 运行 handler 层的单元测试
|
- **WHEN** 运行 handler 层的单元测试
|
||||||
|
|||||||
Reference in New Issue
Block a user