Cobra + Viper Golang Как проверить подкоманды?
Я разрабатываю веб-приложение с Go. Пока все хорошо, но теперь я интегрирую Wercker как инструмент CI и начал заботиться о тестировании. Но мое приложение сильно зависит от схемы Cobra/Viper configuration/flags / environment_variables, и я не знаю, как правильно ввести значения Viper перед запуском моего набора тестов. Любая помощь будет высоко ценится.
1 ответов
когда я использую 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
легко.
вы можете увидеть еще один (не тупой) пример здесь (и соответствующий тест здесь).