Go テストでのログへのアクセス
Go テストでは、関数のログ出力の検証は、特に関数自体がログを記録する場合に困難になることがあります。エラーを直接取得します。
ログ出力をキャプチャするための一般的な解決策は、テスト対象の関数を実行する前にデフォルトのログ出力をバッファにリダイレクトすることです。
例:
次の readByte 関数を考えてみましょう:
func readByte(/*...*/) { if err != nil { fmt.Println("ERROR") log.Print("Couldn't read first byte") return } }
ログ出力をテストするには、テスト ファイルで次のアプローチを使用できます:
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") }
この例では、
以上がGo テストでログ出力をキャプチャして検証する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。