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).
Problemi correlati
- 1. Configurazione avanzata con il golang Viper lib
- 2. argparse con i sottocomandi richiesti
- 3. Come implementare i sottocomandi usando Boost.Program_options?
- 4. Come testare una funzione sleep in golang
- 5. Come si completano automaticamente i sottocomandi nidificati a più livelli?
- 6. Come devo implementare sottocomandi "nidificati" in Python?
- 7. Come comprendere l'architettura pulita di VIPER?
- 8. Argomenti e sottocomandi Python argparse
- 9. Come testare local gae golang urlfetch tramite proxy?
- 10. Come un UITabBarController si adatta all'architettura VIPER?
- 11. Fare una bandiera cobra Comando richiesto
- 12. Test di Golang usando i file locali
- 13. Come testare i resolver sbt
- 14. Come testare i tratti PHP
- 15. Come testare i macro Scala?
- 16. Come testare i plugin SBT
- 17. Modalità viper in tutte le modalità
- 18. Disattiva la modalità viper in Emacs?
- 19. Come funzionano i pacchetti in golang
- 20. Come attraversare i dati XML in Golang?
- 21. Rspec 3 come testare i messaggi flash
- 22. Come posso testare automaticamente i cookie?
- 23. Come testare rapidamente i gadget di Windows?
- 24. Come testare i sottodomini nginx su localhost
- 25. Come testare i componenti React Native
- 26. Come testare i controller con CodeIgniter?
- 27. Come testare i tipi di enum?
- 28. Come testare i filtri di richiesta jersey2?
- 29. Rails: Come testare i sottodomini con RSpec
- 30. Come testare i modelli Symfony2 usando PHPUnit