2016-03-06 2 views
6

Я разрабатываю веб-приложение с Go. Пока все хорошо, но теперь я интегрирую Wercker в инструмент CI и начал заботиться о тестировании. Но мое приложение сильно зависит от схемы конфигурации Cobra/Viper/flags/environment_variables, и я не знаю, как правильно инициализировать значения Viper перед запуском моего набора тестов. Любая помощь приветствуется.Cobra + Viper Golang Как проверить подкоманды?

ответ

6

Когда я использую 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).

Смежные вопросы