2016-03-06 40 views
6

Zajmuję się tworzeniem aplikacji internetowej z funkcją Go. Do tej pory tak dobrze, ale teraz integruję Werckera jako narzędzie CI i zaczęłam dbać o testowanie. Ale moja aplikacja opiera się głównie na konfiguracji Cobra/Viper/flags/environment_variables i nie wiem jak poprawnie zainicjować wartości Viper przed uruchomieniem mojego zestawu testów. Każda pomoc byłaby bardzo cenna.Cobra + Viper Golang Jak testować podpolecenia?

Odpowiedz

6

Kiedy używam Cobra/Viper lub jakiejkolwiek innej kombinacji pomocników CLI, moim sposobem jest to, aby narzędzie CLI uruchamiało funkcję, której jedynym celem będzie uzyskanie argumentów i przekazanie ich innej metodzie, która zrobi rzeczywista praca.

Oto krótki (i głupi) przykład stosując 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) 
     } 
} 

Tutaj funkcja Boom jest trudne do sprawdzenia, ale jeden boom jest łatwe.

Możesz zobaczyć inny (nietylmy) przykład tego here (i odpowiedni test here).