Maison  >  Article  >  développement back-end  >  Comment tester les routes Chi avec des variables de chemin dans Go ?

Comment tester les routes Chi avec des variables de chemin dans Go ?

DDD
DDDoriginal
2024-10-28 14:06:02879parcourir

How to Test Chi Routes with Path Variables in Go?

Test des routes Chi avec des variables de chemin

Dans Go, la bibliothèque github.com/go-chi/chi fournit des outils pour créer des routeurs HTTP efficaces. Lors du test de ces routes, il est crucial de s'assurer qu'elles peuvent gérer correctement les variables de chemin.

Comprendre le problème

Alors que chi fournit un middleware ArticleCtx qui injecte des variables de chemin dans la requête contexte, ce middleware ne semble pas fonctionner avec net/http/httptest. Cela entraîne l'erreur « Erreur HTTP : entité non traitable » lors de l'exécution des tests, car le gestionnaire GetArticleID n'a pas accès à la valeur de la variable de chemin.

Solution : ajouter manuellement des variables de chemin

Pour surmonter ce problème, nous devons ajouter manuellement la variable path au contexte de la requête avant de tester le gestionnaire. Ceci peut être réalisé en utilisant le code suivant :

<code class="go">w := httptest.NewRecorder()
r := httptest.NewRequest("GET", "/articles/1", nil)

rctx := chi.NewRouteContext()
rctx.URLParams.Add("articleID", "1")

r = r.WithContext(context.WithValue(r.Context(), chi.RouteCtxKey, rctx))

ArticleCtx(http.HandlerFunc(GetArticleID)).ServeHTTP(w, r)</code>

Conseils supplémentaires

  • Assurez-vous que vos gestionnaires gèrent correctement les variables de chemin et les convertissent au type approprié. (par exemple, Atoi pour les variables entières).
  • Utilisez des noms de tests descriptifs et incluez les valeurs attendues pour rendre les résultats des tests faciles à comprendre.
  • Envisagez d'utiliser un cadre de test comme testify pour des tests plus robustes et plus expressifs. .

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