package config import ( "os" "testing" "github.com/stretchr/testify/assert" ) func TestWalletConfig_AlipayRechargeBonus(t *testing.T) { // 切换到项目根目录,这样配置加载器就能找到配置文件 originalWd, err := os.Getwd() assert.NoError(t, err) // 切换到项目根目录(从 internal/config 目录向上两级) err = os.Chdir("../../") assert.NoError(t, err) defer os.Chdir(originalWd) // 测试结束后恢复原目录 // 加载配置 cfg, err := LoadConfig() assert.NoError(t, err) assert.NotNil(t, cfg) // 验证钱包配置 assert.NotNil(t, cfg.Wallet) assert.Greater(t, len(cfg.Wallet.AliPayRechargeBonus), 0, "支付宝充值赠送规则不能为空") // 验证具体的赠送规则 expectedRules := []struct { rechargeAmount float64 bonusAmount float64 }{ {1000.00, 50.00}, // 充1000送50 {5000.00, 300.00}, // 充5000送300 {10000.00, 800.00}, // 充10000送800 } for i, expected := range expectedRules { if i < len(cfg.Wallet.AliPayRechargeBonus) { rule := cfg.Wallet.AliPayRechargeBonus[i] assert.Equal(t, expected.rechargeAmount, rule.RechargeAmount, "充值金额不匹配,期望: %f, 实际: %f", expected.rechargeAmount, rule.RechargeAmount) assert.Equal(t, expected.bonusAmount, rule.BonusAmount, "赠送金额不匹配,期望: %f, 实际: %f", expected.bonusAmount, rule.BonusAmount) } } t.Logf("钱包配置加载成功,包含 %d 条支付宝充值赠送规则", len(cfg.Wallet.AliPayRechargeBonus)) for i, rule := range cfg.Wallet.AliPayRechargeBonus { t.Logf("规则 %d: 充值 %.2f 元,赠送 %.2f 元", i+1, rule.RechargeAmount, rule.BonusAmount) } }