ホームページ  >  記事  >  バックエンド開発  >  Go でパス変数を使用して Chi ルートをテストする方法

Go でパス変数を使用して Chi ルートをテストする方法

DDD
DDDオリジナル
2024-10-28 14:06:02879ブラウズ

How to Test Chi Routes with Path Variables in Go?

パス変数を使用した 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>

追加のヒント

  • ハンドラーがパス変数を正しく処理し、適切な型に変換していることを確認します。 (例: 整数変数の場合は Atoi)。
  • テスト結果を理解しやすくするために、わかりやすいテスト名を使用し、期待値を含めます。
  • より堅牢で表現力豊かなテストを行うには、testify などのテスト フレームワークの使用を検討してください。 .

以上がGo でパス変数を使用して Chi ルートをテストする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。