Sto sviluppando un'app Web con Go. Fin qui tutto bene, ma ora sto integrando Wercker come strumento di configurazione e ho iniziato a occuparmi dei test. Ma la mia app fa molto affidamento sullo schema di configurazione/flag/environment_variables di Cobra/Viper e non so come inizializzare correttamente i valori di Viper prima di eseguire la mia suite di test. Qualsiasi aiuto sarebbe molto apprezzato.Cobra + Viper Golang Come testare i sottocomandi?
6
A
risposta
6
Quando uso Cobra/Viper o qualsiasi altra combinazione di helper CLI, il mio modo di fare ciò è di fare in modo che lo strumento CLI esegua una funzione il cui unico scopo sarà quello di ottenere argomenti e passarli ad un altro metodo che eseguirà il lavoro reale.
Ecco un breve esempio (e dumb) utilizzando 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)
}
}
Qui, la funzione Boom
è difficile da testare, ma il boom
uno è facile.
È possibile visualizzare un altro esempio (non stupido) di questo here (e il test corrispondente here).