Test des fonctions Go avec log.Fatal()
Dans Go, il peut être difficile de tester des fonctions qui utilisent log.Fatal() , car il appelle directement os.Exit(1), provoquant des échecs de test. Voici comment résoudre ce problème :
Créez un enregistreur personnalisé qui hérite de log.Logger mais remplace la méthode log.Fatal() :
package main import ( "log" "os" ) type TestLogger struct { *log.Logger } func (l *TestLogger) Fatal(v ...interface{}) { l.Output(2, fmt.Sprint(v...)) } func (l *TestLogger) Fatalf(format string, v ...interface{}) { l.Output(2, fmt.Sprintf(format, v...)) }
Remplacez l'enregistreur standard par votre enregistreur personnalisé dans vos cas de test :
import ( "bytes" "github.com/YourPackage/logging" ) func TestFunctionWithLogFatal(t *testing.T) { buffer := new(bytes.Buffer) testLogger := logging.NewTestLogger(buffer) log.SetOutput(testLogger) // Call the function under test here output := buffer.String() // Assert that the output contains the expected log message }
En remplaçant la méthode log.Fatal() dans l'enregistreur personnalisé, vous pouvez gérer les messages de journal sans réellement quitter le processus de test. Au lieu de cela, ils sont capturés dans l’objet tampon fourni pour vérification. Cela vous permet de tester les fonctions qui utilisent efficacement log.Fatal().
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!