Maison >développement back-end >Golang >Comment tester les itinéraires Go-Chi avec des variables de chemin ?

Comment tester les itinéraires Go-Chi avec des variables de chemin ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-27 12:14:30385parcourir

How to Test Go-Chi Routes with Path Variables?

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!

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