Documentation
¶
Overview ¶
slogtestパッケージは、log/slog.Handlerの実装をテストするためのサポートを提供します。
Example (Parsing) ¶
この例は、このパッケージを使用してハンドラをテストする一つの手法を示しています。 ハンドラには bytes.Buffer が書き込み用に与えられ、結果の出力の各行が解析されます。 JSON出力の場合、encoding/json.Unmarshal はmap[string]anyへのポインタを与えると、 望ましい形式の結果を生成します。
package main import ( "github.com/shogo82148/std/bytes" "github.com/shogo82148/std/encoding/json" "github.com/shogo82148/std/log" "github.com/shogo82148/std/log/slog" "github.com/shogo82148/std/testing/slogtest" ) func main() { var buf bytes.Buffer h := slog.NewJSONHandler(&buf, nil) results := func() []map[string]any { var ms []map[string]any for _, line := range bytes.Split(buf.Bytes(), []byte{'\n'}) { if len(line) == 0 { continue } var m map[string]any if err := json.Unmarshal(line, &m); err != nil { panic(err) // 実際のテストでは、t.Fatalを使用します。 } ms = append(ms, m) } return ms } err := slogtest.TestHandler(h, results) if err != nil { log.Fatal(err) } }
Output:
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func TestHandler ¶
TestHandlerは、slog.Handler をテストします。 もしTestHandlerが何かしらの不適切な動作を見つけた場合、それら全てを報告するエラーを返します。 これらはerrors.Joinを使用して単一のエラーに結合されます。
TestHandlerは、指定されたHandlerを slog.Logger にインストールし、 Loggerの出力メソッドに対して複数回の呼び出しを行います。
results関数は、そのような呼び出しの全ての後で呼び出されます。 それはmap[string]anyのスライスを返すべきで、Loggerの出力メソッドへの各呼び出しに対して一つです。 マップのキーと値は、Handlerの出力のキーと値に対応しているべきです。 出力内の各グループは、それ自体がネストしたmap[string]anyとして表現されるべきです。 標準のキーであるslog.TimeKey、slog.LevelKey、slog.MessageKeyを使用すべきです。
もしHandlerがJSONを出力するなら、`map[string]any`を引数にして encoding/json.Unmarshal を呼び出すことで、適切なデータ構造が作成されます。
もしHandlerが意図的にテストでチェックされる属性を削除するなら、 results関数はその欠如をチェックし、それを返すマップに追加すべきです。
Types ¶
This section is empty.