Maison >développement back-end >Golang >Comment tester correctement la transmission d'arguments dans Golang ?
Test de la transmission des arguments dans Golang
Dans Golang, les arguments peuvent être transmis aux fonctions à l'aide de drapeaux. Pour tester la transmission d'arguments, un test peut être écrit qui simule la transmission d'arguments de ligne de commande.
Le problème
Lors de l'exécution du test suivant :
import ( "os" "testing" ) func TestArgs(t *testing.T) { expected := "bla" os.Args = []string{"-user=bla"} actual := passArguments() if actual != expected { t.Errorf("Test failed, expected: '%s', got: '%s'", expected, actual) } }
le test échoue avec un message d'erreur indiquant que le résultat attendu ("bla") ne correspond pas au résultat réel ("root").
La solution
Le problème se pose car la première valeur dans os.Args est le chemin d'accès à l'exécutable lui-même. Pour résoudre ce problème, la tranche os.Args doit être mise à jour pour inclure à la fois l'exécutable et l'argument :
os.Args = []string{"cmd", "-user=bla"}
De plus, os.Args est une variable globale, il est donc recommandé de sauvegarder l'état d'origine et restaurez-le après le test pour éviter toute interférence avec d'autres tests :
oldArgs := os.Args defer func() { os.Args = oldArgs }()
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!