probando rutas chi con variables de ruta: Solución de problemas y soluciones
en Go-chi, el acceso a la variable de la ruta dentro de las rutas se facilita por funciones de middleware como ArticlectX. Al probar tales rutas, es esencial establecer la variable de ruta en el contexto de la solicitud HTTP manualmente. Esto se debe a que el contexto no está poblado automáticamente por el paquete httptest.
problema:
para probar una ruta que utiliza variables de ruta, se crea una solicitud de prueba usando httptest.newrequest. Sin embargo, la ejecución del middleware de ArticLectx durante la prueba devuelve un error HTTP (entidad sin coincidencia), indicando que el contexto variable de ruta no está disponible.
solución:
la solución se encuentra en el contexto de la ruta de la ruta al contexto de solicitud antes de pasarlo al controlador:
// 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)
mejor Prácticas:
Considere un marco de prueba como testificar para pruebas unitarias simplificadas.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3