Maison >développement back-end >Golang >Comment tester les itinéraires Go-Chi avec des variables de chemin ?
Test des itinéraires Chi avec des variables de chemin
En go-chi, tester des itinéraires avec des variables de chemin peut initialement poser des défis. Cependant, en employant des techniques appropriées, vous pouvez écrire efficacement des tests fiables.
Le problème vient du fait que les valeurs des paramètres de chemin ne sont pas automatiquement renseignées dans le contexte de la requête lors de l'utilisation de httptest.NewRequest. Cela nécessite l'ajout manuel de ces paramètres.
Une approche consiste à créer un nouveau contexte de requête et à définir manuellement les paramètres d'URL :
<code class="go">// Request & new request context creation req := httptest.NewRequest("GET", "/articles/123", nil) reqCtx := chi.NewRouteContext() reqCtx.URLParams.Add("articleID", "123") // Setting custom request context with Route Context Key rctxKey := chi.RouteCtxKey req = req.WithContext(context.WithValue(req.Context(), rctxKey, reqCtx))</code>
Alternativement, il est possible d'utiliser un http.Handler personnalisé qui ajoute automatiquement les valeurs des paramètres de chemin :
<code class="go">type URLParamHandler struct { Next http.Handler } func (h URLParamHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { rctx := chi.NewRouteContext() for key, val := range r.URL.Query() { rctx.URLParams.Add(key, val[0]) } r = r.WithContext(context.WithValue(r.Context(), chi.RouteCtxKey, rctx)) h.Next.ServeHTTP(w, r) }</code>
<code class="go">// Middleware usage in test handler := URLParamHandler{Next: ArticleCtx(GetArticleID)} handler.ServeHTTP(rec, req)</code>
N'oubliez pas d'utiliser le gestionnaire approprié pendant les tests, en vous assurant que le middleware ArticleCtx et le gestionnaire lui-même sont appelés.
En résumé, tester des itinéraires avec des variables de chemin dans go-chi nécessite de veiller à remplir le contexte de la demande avec les paramètres d'URL appropriés. L'utilisation de ces techniques vous permettra de rédiger des tests précis et efficaces.
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!