2016-03-06 11 views
6

Ich entwickle eine Web-App mit Go. So weit, so gut, aber jetzt integriere ich Wercker als CI-Tool und kümmere mich um das Testen. Aber meine App hängt stark vom Cobra/Viper-Schema configuration/flags/environment_variables ab, und ich weiß nicht, wie ich die Viper-Werte vor der Ausführung meiner Testsuite richtig initiiere. Jede Hilfe würde sehr geschätzt werden.Cobra + Viper Golang Wie Sub-Befehle zu testen?

Antwort

6

Wenn ich Cobra/Viper oder eine andere Kombination von CLI - Helfern verwende, muss ich das CLI - Tool eine Funktion ausführen lassen, deren einziger Zweck darin besteht, Argumente zu erhalten und sie an eine andere Methode zu übergeben Eigentliche Arbeit.

Hier ist eine kurze (und dumm) Beispiel Cobra mit:

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) 
     } 
} 

Hier ist die Boom Funktion ist schwer zu testen, aber die boom ist einfach.

Sie können ein anderes (nicht dummes) Beispiel für dieses here (und den entsprechenden Test here) sehen.