gpt4 book ai didi

testing - Cobra:如何在测试中以编程方式设置标志

转载 作者:IT王子 更新时间:2023-10-29 01:34:47 25 4
gpt4 key购买 nike

我正在使用 cobra 构建 CLI,并希望模拟使用不同的选项/标志集运行的命令。我一直在努力弄清楚如何使用 cobra API 在我的测试中设置标志,但还没有真正弄明白。

我有这个:

// NewFooCmd returns a cobra.Command fitted to print output to the buffer for easier testing.
buf := &bytes.Buffer{}
cmd := package.NewFooCmd(buf)

cmd.Execute()

// some validations on the content of buf

到目前为止,我发现的最接近的是:

cmd.Flags().Set(名称字符串,值字符串)

...但这似乎不对,因为虽然标志的名称都是字符串,但它们并不都将字符串作为值。此外,即使我有一个 int 标志并传递 string(1),它似乎也不起作用。

我在这里缺少一些简单的东西吗?

最佳答案

您可以使用(c *Command) SetArgs(a []string) function为了这。您的某些参数是整数或 bool 值这一事实在这里无关紧要 - 毕竟,这是用户将在命令行上输入的内容!

(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()

...

关于testing - Cobra:如何在测试中以编程方式设置标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49848898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com