ホームページ  >  記事  >  バックエンド開発  >  パス変数を使用して Go-Chi ルートをテストする方法: 処理できないエンティティ エラーを解決する

パス変数を使用して Go-Chi ルートをテストする方法: 処理できないエンティティ エラーを解決する

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-27 06:59:29325ブラウズ

How to Test Go-Chi Routes with Path Variables:  Resolving Unprocessable Entity Errors

パス変数を使用した Chi ルートのテスト: トラブルシューティングと解決策

go-chi では、ルート内のパス変数へのアクセスは、次のようなミドルウェア関数によって容易になります。記事Ctx。このようなルートをテストするときは、HTTP リクエストのコンテキストでパス変数を手動で設定することが重要です。これは、コンテキストが httptest パッケージによって自動的に設定されないためです。

問題:
パス変数を利用するルートをテストするには、httptest.NewRequest を使用してテスト リクエストが作成されます。ただし、テスト中に ArticleCtx ミドルウェアを実行すると、パス変数コンテキストが使用できないことを示す HTTP エラー (処理できないエンティティ) が返されます。

解決策:
解決策は手動で行うことです。ハンドラーに渡す前にリクエスト コンテキストにパス パラメーターを追加します:

<code class="go">// Create a context with the path variable
req := httptest.NewRequest("GET", "/articles/1", nil)
rctx := chi.NewRouteContext()
rctx.URLParams.Add("articleID", "1")

// Set the RouteCtx in the request context
req = req.WithContext(context.WithValue(req.Context(), chi.RouteCtxKey, rctx))

// Execute the handler with the modified request
rec := httptest.NewRecorder()
ArticleCtx(http.HandlerFunc(GetArticleID)).ServeHTTP(rec, req)</code>

パス変数をリクエストのコンテキストに追加することにより、ArticleCtx ミドルウェアは記事 ID を正しく取得でき、処理できないエンティティ エラーを解決します。

追加のベスト プラクティス:

  • 単体テストを簡略化するには testify などのテスト フレームワークを検討します。
  • httptest.NewRecorder() メソッドを使用します。テスト対象のハンドラーによって書き込まれた応答をキャプチャします。
  • テストが成功した場合に、予想される応答本体と実際の応答本体が一致していることを確認します。
  • 不正なリクエストの処理など、さまざまなシナリオをカバーする追加のテストを実装します。ルートレベルのエラー。

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

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