Zugriff auf Protokolle in Go-Tests
Bei Go-Tests kann die Überprüfung der Protokollausgabe einer Funktion eine Herausforderung sein, insbesondere wenn die Funktion selbst protokolliert den Fehler direkt.
Um die Protokollausgabe zu erfassen, besteht eine gängige Lösung darin, die Standardprotokollausgabe in einen Puffer umzuleiten, bevor die zu testende Funktion ausgeführt wird.
Beispiel:
Betrachten Sie die folgende readByte-Funktion:
func readByte(/*...*/) { if err != nil { fmt.Println("ERROR") log.Print("Couldn't read first byte") return } }
Um die Protokollausgabe zu testen, können wir den folgenden Ansatz in der Testdatei verwenden:
package main import ( "bytes" "testing" "github.com/stretchr/testify/assert" ) func TestReadByte(t *testing.T) { var buf bytes.Buffer log.SetOutput(&buf) defer func() { log.SetOutput(os.Stderr) }() readByte() output := buf.String() assert.Contains(t, output, "Couldn't read first byte") }
In diesem Beispiel , wir:
Das obige ist der detaillierte Inhalt vonWie erfasst und überprüft man die Protokollausgabe in Go-Tests?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!