6
我正在用Go开发一个Web应用程序。目前为止这么好,但现在我正在将Wercker作为CI工具并开始关注测试。但是我的应用很大程度上依赖于Cobra/Viper配置/ flags/environment_variables方案,并且我不知道如何在运行测试套件之前正确初始化Viper值。任何帮助将非常感激。Cobra + Viper Golang如何测试子命令?
我正在用Go开发一个Web应用程序。目前为止这么好,但现在我正在将Wercker作为CI工具并开始关注测试。但是我的应用很大程度上依赖于Cobra/Viper配置/ flags/environment_variables方案,并且我不知道如何在运行测试套件之前正确初始化Viper值。任何帮助将非常感激。Cobra + Viper Golang如何测试子命令?
当我使用Cobra/Viper或CLI助手的任何其他组合时,我的做法是让CLI工具运行一个函数,其唯一目的是获取参数并将它们传递给另一个将执行实际工作。
下面是使用眼镜蛇短(和哑)例如:
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
一个是容易的。