경로 변수를 사용하여 Chi 경로 테스트
go-chi에서 경로 변수를 사용하여 경로를 테스트하는 것은 처음에는 문제가 될 수 있습니다. 그러나 적절한 기술을 사용하면 신뢰할 수 있는 테스트를 효과적으로 작성할 수 있습니다.
문제는 httptest.NewRequest를 사용할 때 경로 매개변수 값이 요청 컨텍스트에 자동으로 채워지지 않는다는 사실에서 비롯됩니다. 이를 위해서는 이러한 매개변수를 수동으로 추가해야 합니다.
한 가지 접근 방식은 새 요청 컨텍스트를 생성하고 URL 매개변수를 수동으로 설정하는 것입니다.
<code class="go">// Request & new request context creation req := httptest.NewRequest("GET", "/articles/123", nil) reqCtx := chi.NewRouteContext() reqCtx.URLParams.Add("articleID", "123") // Setting custom request context with Route Context Key rctxKey := chi.RouteCtxKey req = req.WithContext(context.WithValue(req.Context(), rctxKey, reqCtx))</code>
또는 다음과 같은 사용자 정의 http.Handler를 사용할 수도 있습니다. 자동으로 경로 매개변수 값을 추가합니다.
<code class="go">type URLParamHandler struct { Next http.Handler } func (h URLParamHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { rctx := chi.NewRouteContext() for key, val := range r.URL.Query() { rctx.URLParams.Add(key, val[0]) } r = r.WithContext(context.WithValue(r.Context(), chi.RouteCtxKey, rctx)) h.Next.ServeHTTP(w, r) }</code>
<code class="go">// Middleware usage in test handler := URLParamHandler{Next: ArticleCtx(GetArticleID)} handler.ServeHTTP(rec, req)</code>
ArticleCtx 미들웨어와 핸들러 자체가 모두 호출되도록 테스트하는 동안 적절한 핸들러를 사용해야 한다는 점을 기억하세요.
요약하자면, go-chi에서 경로 변수를 사용하여 경로를 테스트하려면 적절한 URL 매개변수로 요청 컨텍스트를 채우는 데 주의가 필요합니다. 이러한 기술을 사용하면 정확하고 효과적인 테스트를 작성할 수 있습니다.
위 내용은 경로 변수를 사용하여 Go-Chi 경로를 테스트하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!