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?
6
A
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).