경로 변수를 사용하여 Go-Chi 경로를 테스트하는 방법: 처리할 수 없는 엔터티 오류 해결

Linda Hamilton
풀어 주다: 2024-10-27 06:59:29
원래의
409명이 탐색했습니다.

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

경로 변수를 사용하여 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를 올바르게 검색하여 처리할 수 없는 엔터티 오류를 해결할 수 있습니다.

추가 모범 사례:

  • 단순화된 단위 테스트를 위해 testify와 같은 테스트 프레임워크를 고려하세요.
  • httptest.NewRecorder() 메서드를 사용하세요. 테스트 중인 핸들러가 작성한 응답을 캡처합니다.
  • 성공적인 테스트를 위해 예상 응답 본문과 실제 응답 본문이 일치하는지 확인하세요.
  • 잘못된 요청 처리 또는 경로 수준 오류.

위 내용은 경로 변수를 사용하여 Go-Chi 경로를 테스트하는 방법: 처리할 수 없는 엔터티 오류 해결의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿