Test des routes Chi avec des variables de chemin : dépannage et solutions
Dans go-chi, l'accès aux variables de chemin dans les routes est facilité par des fonctions middleware telles que ArticleCtx. Lors du test de telles routes, il est essentiel de définir manuellement la variable path dans le contexte de la requête HTTP. En effet, le contexte n'est pas renseigné automatiquement par le package httptest.
Problème :
Pour tester une route qui utilise des variables de chemin, une requête de test est créée à l'aide de httptest.NewRequest. Cependant, l'exécution du middleware ArticleCtx pendant le test renvoie une erreur HTTP (Unprocessable Entity), indiquant que le contexte de la variable path n'est pas disponible.
Solution :
La solution réside dans manuellement en ajoutant le paramètre path au contexte de la requête avant de le transmettre au gestionnaire :
<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>
En ajoutant la variable path au contexte de la requête, le middleware ArticleCtx peut récupérer correctement l'ID de l'article, résolvant ainsi l'erreur d'entité non traitable.
Bonnes pratiques supplémentaires :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!