У меня есть следующая функция, которую я пытаюсь проверить:
import (
"github.com/spf13/pflag"
)
func parseCLIFlags() cliOptions {
mode := pflag.StringP("mode", "m", "json", "file format")
outType := pflag.StringP("out-type", "o", "stdout", "Output format")
outFile := pflag.String("out-file", "", "Output file. Only used if `--out-type` is not stdout")
inFiles := pflag.StringArrayP("file", "f", []string{}, "Files to compare. Use this flag multiple times, once for each file.")
pflag.Parse()
options := cliOptions{
mode: *mode,
outType: *outType,
outFile: *outFile,
inFiles: *inFiles,
}
return options
}
, и я пытаюсь проверить следующие тесты:
func TestFlagsAreParsedCorrectly(t *testing.T) {
os.Args = []string{"schmp", "-f", "testdata/yaml/yaml_1.yaml", "--file", "testdata/yaml/yaml_2.yaml", "--mode", "yaml", "-o", "json", "--out-file", "sample.json"}
cliOptions := parseCLIFlags()
if cliOptions.mode != "yaml" {
t.Fatalf("could not set mode")
}
if cliOptions.outType != "json" {
t.Fatalf("could not set outType")
}
if cliOptions.outFile != "sample.json" {
t.Fatalf("could not set outFile")
}
if !reflect.DeepEqual(cliOptions.inFiles, []string{"testdata/yaml/yaml_1.yaml", "testdata/yaml/yaml_2.yaml"}) {
fmt.Println("could not set inFiles")
}
}
func TestCheckDefaultFlags(t *testing.T) {
os.Args = []string{"schmp"}
cliOptions := parseCLIFlags()
if cliOptions.mode != "json" {
t.Fatalf("default mode is not `json`")
}
}
Но мои тесты запаниковали с помощью flag redefined: mode
Есть идеи, как я могу это исправить, чтобы я мог проверить?