문제 : 경로 변수를 사용하는 경로를 테스트하기 위해 httptest.newrequest를 사용하여 테스트 요청이 생성됩니다. 그러나 테스트 중에 ArticLectX Middleware를 실행하면 HTTP 오류 (처리 불가능한 엔티티)를 반환합니다.
솔루션 :
// 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)
경로 변수로 req : = httptest.newrequest ( "get", "/articles/1", nil) rctx : = chi.newroutecontext () rctx.urlparams.add ( "articleid", "1") // 요청 컨텍스트에서 rountectx를 설정합니다 req = req.withContext (context.withValue (req.context (), chi.routectxkey, rctx)) // 수정 된 요청으로 핸들러를 실행합니다 rec : = httptest.newrecorder () ArticLectx (http.handlerFunc (getArticleId)). servhttp (rec, req)
는 요청의 컨텍스트에 경로 변수를 추가함으로써 ArticLectX Middleware는 물품 ID를 올바르게 검색하여 비증약을받을 수없는 엔티티 오류를 올바르게 검색 할 수 있습니다.
는 단순화 된 단위 테스트에 대해 증언하는 것과 같은 테스트 프레임 워크를 고려하십시오. 나쁜 요청 또는 경로 수준 오류 처리와 같은 다양한 시나리오를 다루는 테스트.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3