テスト対象の関数によって生成されたログを検証するには、ログをキャプチャして検査することが不可欠です。これは、出力をリダイレクトし、期待値と比較することで実現できます。
この例では、readByte 関数はログ メッセージを標準出力に出力します。テストでこれらのメッセージをキャプチャするには、以下に示すように bytes.Buffer を利用できます。
package main import ( "bytes" "fmt" "io" "log" "os" "testing" ) func readByte(/*...*/) { // ... if err != nil { fmt.Println("ERROR") log.Print("Couldn't read first byte") return } // ... } func TestReadByte(t *testing.T) { var buf bytes.Buffer log.SetOutput(&buf) defer func() { log.SetOutput(os.Stderr) }() readByte() t.Log(buf.String()) }
説明:
buf の内容を調べることで、予期したログが readByte 関数によって生成されたかどうかを確認できます。このアプローチにより、テスト対象の関数のコードを変更せずにログ出力をテストできます。
以上がGo テストでログをキャプチャして検査するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。