


Comment tester les routes Go-Chi avec des variables de chemin : résoudre les erreurs d'entité non traitables
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

GO Language Pack Import: Quelle est la différence entre le soulignement et sans soulignement?

Comment mettre en œuvre le transfert d'informations à court terme entre les pages du cadre Beego?

Comment convertir la liste des résultats de la requête MySQL en une tranche de structure personnalisée dans le langage Go?

Comment puis-je définir des contraintes de type personnalisé pour les génériques en Go?

Comment écrire des objets et des talons simulés pour les tests en Go?

Comment écrire des fichiers dans GO Language de manière pratique?

Comment rédigez-vous des tests unitaires en Go?

Comment puis-je utiliser des outils de traçage pour comprendre le flux d'exécution de mes applications GO?
