경로 변수를 사용하여 Chi 경로 테스트: 문제 해결 및 솔루션
go-chi에서는 다음과 같은 미들웨어 기능을 통해 경로 내 경로 변수 액세스가 용이해집니다. ArticleCtx. 이러한 경로를 테스트할 때는 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를 올바르게 검색하여 처리할 수 없는 엔터티 오류를 해결할 수 있습니다.
추가 모범 사례:
위 내용은 경로 변수를 사용하여 Go-Chi 경로를 테스트하는 방법: 처리할 수 없는 엔터티 오류 해결의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!