加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Cobra Viper Golang如何测试子命令?

发布时间:2020-12-16 19:22:16 所属栏目:大数据 来源:网络整理
导读:我正在使用Go开发一个Web应用程序.到目前为止一直很好,但现在我正在将Wercker整合为CI工具,并开始关注测试.但我的应用程序在很大程度上依赖于Cobra / Viper配置/标志/ environment_variables方案,我不知道如何在运行我的测试套件之前正确初始化Viper值.任何
我正在使用Go开发一个Web应用程序.到目前为止一直很好,但现在我正在将Wercker整合为CI工具,并开始关注测试.但我的应用程序在很大程度上依赖于Cobra / Viper配置/标志/ environment_variables方案,我不知道如何在运行我的测试套件之前正确初始化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功能很难测试,但繁荣的功能很容易.

您可以看到此here的另一个(非哑)示例(以及对应的测试here).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读