package dto import ( "encoding/json" "strings" "testing" ) func TestChannelConfigJSONUsesSnakeCaseFields(t *testing.T) { payload, err := json.Marshal(struct { WxWork WxWorkKFChannelConfig `json:"wxwork"` Web WebChannelConfig `json:"web"` }{ WxWork: WxWorkKFChannelConfig{OpenKfID: "wkf"}, Web: WebChannelConfig{ThemeColor: "#fff"}, }) if err != nil { t.Fatalf("marshal channel config: %v", err) } text := string(payload) for _, field := range []string{`"open_kf_id"`, `"theme_color"`} { if !strings.Contains(text, field) { t.Fatalf("expected %s in %s", field, text) } } for _, field := range []string{"openKfId", "themeColor"} { if strings.Contains(text, field) { t.Fatalf("unexpected camelCase field %q in %s", field, text) } } }