我正在使用 Go 开发一个网络应用程序。到目前为止一切顺利,但现在我将 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 https://github.com/elwinar/rambler/blob/master/apply.go(以及相应的测试here https://github.com/elwinar/rambler/blob/master/apply_test.go).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)