Maison  >  Article  >  développement back-end  >  Comment tester les routes Go-Chi avec des variables de chemin : résoudre les erreurs d'entité non traitables

Comment tester les routes Go-Chi avec des variables de chemin : résoudre les erreurs d'entité non traitables

Linda Hamilton
Linda Hamiltonoriginal
2024-10-27 06:59:29404parcourir

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

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 :

  • Envisagez un cadre de test comme testify pour des tests unitaires simplifiés.
  • Utilisez la méthode httptest.NewRecorder() pour capturer la réponse écrite par le gestionnaire testé.
  • Assurez-vous que les corps de réponse attendus et réels correspondent pour des tests réussis.
  • Mettez en œuvre des tests supplémentaires pour couvrir divers scénarios, tels que la gestion des requêtes incorrectes ou erreurs au niveau de l'itinéraire.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn