パス変数を使用した Chi ルートのテスト
Go では、github.com/go-chi/chi ライブラリは、柔軟なルート変数を作成するためのツールを提供します。効率的なHTTPルーター。これらのルートをテストするときは、パス変数を正しく処理できることを確認することが重要です。
問題の理解
一方、chi はリクエストにパス変数を挿入する ArticleCtx ミドルウェアを提供しています。コンテキストによると、このミドルウェアは net/http/httptest では動作しないようです。 GetArticleID ハンドラーがパス変数値にアクセスできないため、テストの実行時に「HTTP エラー: 処理できないエンティティ」というエラーが発生します。
解決策: パス変数を手動で追加します
この問題を解決するには、ハンドラーをテストする前に、リクエスト コンテキストにパス変数を手動で追加する必要があります。これは、次のコードを使用して実現できます。
<code class="go">w := httptest.NewRecorder() r := httptest.NewRequest("GET", "/articles/1", nil) rctx := chi.NewRouteContext() rctx.URLParams.Add("articleID", "1") r = r.WithContext(context.WithValue(r.Context(), chi.RouteCtxKey, rctx)) ArticleCtx(http.HandlerFunc(GetArticleID)).ServeHTTP(w, r)</code>
追加のヒント
以上がGo でパス変数を使用して Chi ルートをテストする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。