您可以使用
(c *Command) SetArgs(a []string)
function
为了这个。一些参数是整数或布尔值这一事实在这里并不重要——毕竟,这是用户将在命令行中输入的内容!
这个
(c *Command) DebugFlags()
function
可以在开发测试时使用,以确保您通过的标志也被正确解释。
我使用Cobra进行的集成测试结果往往如下所示:
...
cmd := cli.RootCmd()
buf := new(bytes.Buffer)
cmd.SetOutput(buf)
cmd.SetArgs([]string{
"--some-flag",
fmt.Sprintf("--some-string=%s", value),
fmt.Sprintf("--some-integer=%d", integer),
})
err := cmd.Execute()
...