gpt4 book ai didi

go - Cobra + Viper Golang 如何测试子命令?

转载 作者:IT老高 更新时间:2023-10-28 13:09:06 25 4
gpt4 key购买 nike

我正在使用 Go 开发一个 Web 应用程序。到目前为止一切顺利,但现在我将 Wercker 集成为 CI 工具并开始关心测试。但我的应用程序严重依赖 Cobra/Viper 配置/标志/环境变量方案,我不知道如何在运行我的测试套件之前正确初始化 Viper 值。任何帮助将非常感激。

最佳答案

当我使用 Cobra/Viper 或 CLI 帮助程序的任何其他组合时,我这样做的方法是让 CLI 工具运行一个函数,其唯一目的是获取参数并将它们传递给另一个方法,该方法将执行实际操作工作。

这是一个使用 Cobra 的简短(愚蠢)示例:

package main

import (
"fmt"
"os"

"github.com/spf13/cobra"
)

func main() {
var Cmd = &cobra.Command{
Use: "boom",
Short: "Explode all the things!",
Run: Boom,
}

if err := Cmd.Execute(); err != nil {
fmt.Println(err)
os.Exit(-1)
}
}

func Boom(cmd *cobra.Command, args []string) {
boom(args...)
}

func boom(args ...string) {
for _, arg := range args {
println("boom " + arg)
}
}

这里,boom 功能很难测试,但 boom 很容易。

您可以查看此 here 的另一个(非哑)示例(以及相应的测试 here )。

关于go - Cobra + Viper Golang 如何测试子命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35827147/

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