Accès à la sortie du journal dans les tests Go
Dans Go, le package de journaux fournit un moyen pratique de consigner les messages. Cependant, lors de l'écriture de tests qui interagissent avec du code qui génère des messages de journal, tester ces messages peut devenir un défi.
Considérez la fonction suivante readByte qui enregistre une erreur lorsqu'elle est rencontrée :
func readByte(/*...*/) { // ... if err != nil { fmt.Println("ERROR") log.Print("Couldn't read first byte") return } // ... }
Dans un fichier de test correspondant, vous pouvez tenter de vérifier la sortie d'erreur en utilisant :
c.Assert(OUTPUT, check.Matches, "teste")
Cependant, cette approche ne fonctionnera pas puisque la variable OUTPUT n'a pas accès au tampon de journal. Pour résoudre ce problème, vous pouvez utiliser une méthode pour capturer la sortie du journal pendant le test.
Capturer la sortie du journal
Une approche pour capturer la sortie du journal consiste à rediriger temporairement le sortie standard où le journal est imprimé. Ceci peut être réalisé via la fonction log.SetOutput, comme démontré dans l'exemple suivant :
func TestReadByte(t *testing.T) { var buf bytes.Buffer // Update output to write to the buffer log.SetOutput(&buf) // Reset output to original after test defer func() { log.SetOutput(os.Stderr) }() readByte() // Verify the buffer contains the expected log message t.Log(buf.String()) }
L'exécution du test produira une sortie similaire à :
ERROR Couldn't read first byte
Cela montre comment vous peut accéder et vérifier efficacement la sortie des journaux dans vos tests Go, vous permettant de tester en profondeur le comportement du code qui génère des journaux.
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!