package config import ( "os" "path/filepath" "testing" "github.com/spf13/viper" ) // video 段配置读取:显式值生效、缺省回落 viper 默认值 func TestVideoConfig(t *testing.T) { dir := t.TempDir() path := filepath.Join(dir, "config.yaml") os.WriteFile(path, []byte(` fanqie: video: output_mode: "proxy" quality: "720p" `), 0644) v := viper.New() v.SetConfigFile(path) if err := v.ReadInConfig(); err != nil { t.Fatal(err) } var c Config if err := v.Unmarshal(&c); err != nil { t.Fatal(err) } if c.Fanqie.Video.OutputMode != "proxy" || c.Fanqie.Video.Quality != "720p" { t.Fatalf("显式配置未生效: %+v", c.Fanqie.Video) } // 缺省回落 v2 := viper.New() v2.SetDefault("fanqie.video.output_mode", "url") v2.SetDefault("fanqie.video.quality", "") var c2 Config if err := v2.Unmarshal(&c2); err != nil { t.Fatal(err) } if c2.Fanqie.Video.OutputMode != "url" || c2.Fanqie.Video.Quality != "" { t.Fatalf("默认值不符: %+v", c2.Fanqie.Video) } }