"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como testar rotas Go-Chi com variáveis ​​de caminho?

Como testar rotas Go-Chi com variáveis ​​de caminho?

Publicado em 2024-11-02
Navegar:258

How to Test Go-Chi Routes with Path Variables?

Testando rotas de Chi com variáveis ​​de caminho

No go-chi, testar rotas com variáveis ​​de caminho pode inicialmente representar desafios. No entanto, ao empregar técnicas adequadas, você pode escrever testes confiáveis ​​com eficácia.

O problema decorre do fato de que os valores dos parâmetros do caminho não são preenchidos automaticamente no contexto da solicitação ao usar httptest.NewRequest. Isso exige a adição manual desses parâmetros.

Uma abordagem envolve a criação de um novo contexto de solicitação e a definição manual dos parâmetros de URL:

// 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))

Como alternativa, é possível usar um http.Handler personalizado que adiciona automaticamente os valores dos parâmetros do caminho:

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)
}
// Middleware usage in test
handler := URLParamHandler{Next: ArticleCtx(GetArticleID)}
handler.ServeHTTP(rec, req)

Lembre-se de usar o manipulador apropriado durante o teste, garantindo que tanto o middleware ArticleCtx quanto o próprio manipulador sejam chamados.

Em resumo, testando rotas com variáveis ​​de caminho no go-chi requer atenção ao preencher o contexto da solicitação com parâmetros de URL apropriados. O emprego dessas técnicas permitirá que você escreva testes precisos e eficazes.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3