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 \
|
||||
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-db-up backend-db-down backend-db-status backend-db-create \
|
||||
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 \
|
||||
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
|
||||
|
||||
# ============================================
|
||||
@@ -19,7 +19,7 @@ dev:
|
||||
build: backend-build frontend-build
|
||||
@echo "✅ Build complete"
|
||||
|
||||
test: backend-test frontend-test
|
||||
test: backend-test desktop-test frontend-test
|
||||
@echo "✅ All tests passed"
|
||||
|
||||
lint: backend-lint frontend-lint
|
||||
@@ -41,6 +41,9 @@ backend-dev:
|
||||
cd backend && go run ./cmd/server
|
||||
|
||||
backend-test:
|
||||
cd backend && go test ./internal/... ./pkg/... ./tests/... ./cmd/server/... -v
|
||||
|
||||
backend-test-all:
|
||||
cd backend && go test ./... -v
|
||||
|
||||
backend-test-unit:
|
||||
@@ -179,6 +182,9 @@ desktop-dev: desktop-prepare-frontend desktop-prepare-embedfs
|
||||
@echo "🖥️ Starting desktop app in dev mode..."
|
||||
cd backend && go run ./cmd/desktop
|
||||
|
||||
desktop-test:
|
||||
cd backend && go test ./cmd/desktop/... -v
|
||||
|
||||
desktop-package-mac:
|
||||
./scripts/build/package-macos.sh
|
||||
|
||||
|
||||
@@ -231,7 +231,7 @@ func setupConfigFile(v *viper.Viper, configPath string) error {
|
||||
return appErrors.Wrap(appErrors.ErrInternal, err)
|
||||
}
|
||||
// 配置文件不存在,创建默认配置文件
|
||||
writeErr := v.SafeWriteConfig()
|
||||
writeErr := v.SafeWriteConfigAs(configPath)
|
||||
if writeErr == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -169,15 +169,15 @@
|
||||
|
||||
- **WHEN** 应用启动
|
||||
- **THEN** SHALL 按以下顺序加载配置:
|
||||
1. 解析 CLI 参数(获取 --config 路径)
|
||||
2. 初始化配置管理器
|
||||
3. 设置默认值
|
||||
4. 绑定 CLI 参数
|
||||
5. 绑定环境变量
|
||||
6. 读取配置文件
|
||||
7. 反序列化到结构体
|
||||
8. 验证配置
|
||||
9. 打印配置摘要
|
||||
1. 解析 CLI 参数(获取 --config 路径)
|
||||
2. 初始化配置管理器
|
||||
3. 设置默认值
|
||||
4. 绑定 CLI 参数
|
||||
5. 绑定环境变量
|
||||
6. 读取配置文件(不存在时自动创建)
|
||||
7. 反序列化到结构体
|
||||
8. 验证配置
|
||||
9. 打印配置摘要
|
||||
|
||||
#### Scenario: 加载失败处理
|
||||
|
||||
|
||||
@@ -31,16 +31,27 @@
|
||||
- **THEN** SHALL 测试请求转换、响应转换、流式转换
|
||||
- **THEN** SHALL 验证转换的准确性和完整性
|
||||
|
||||
#### Scenario: config 加载管道集成测试
|
||||
#### Scenario: LoadConfigFromPath 默认值验证
|
||||
|
||||
- **WHEN** 运行 config 加载管道的集成测试
|
||||
- **THEN** SHALL 验证 LoadConfigFromPath 正确加载默认值
|
||||
- **THEN** SHALL 验证环境变量(`NEX_` 前缀)覆盖默认值
|
||||
- **THEN** SHALL 验证 YAML 配置文件正确读取
|
||||
- **THEN** SHALL 验证优先级链:CLI 参数 > 环境变量 > YAML 文件 > 默认值
|
||||
- **THEN** SHALL 验证首次启动自动创建配置文件
|
||||
- **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 错误分支测试
|
||||
|
||||
- **WHEN** 运行 handler 层的单元测试
|
||||
|
||||
Reference in New Issue
Block a user