Test des itinéraires Chi avec des variables de chemin
Lors du test des itinéraires Go-Chi avec des variables de chemin, vous pouvez rencontrer des erreurs liées aux valeurs manquantes des variables de chemin . Cela peut se produire car les variables de chemin ne sont pas automatiquement ajoutées au contexte de requête lors de l'utilisation de httptest.NewRequest.
Pour résoudre ce problème, ajoutez manuellement les variables de chemin au contexte de requête à l'aide de la fonction httptest.NewRouteContext. Voici un exemple :
<code class="go">func TestGetArticleID(t *testing.T) { tests := []struct { name string rec *httptest.ResponseRecorder req *http.Request expectedBody string expectedHeader string }{ { name: "OK_1", rec: httptest.NewRecorder(), req: httptest.NewRequest("GET", "/articles/1", nil), expectedBody: `article ID:1`, }, { name: "OK_100", rec: httptest.NewRecorder(), req: httptest.NewRequest("GET", "/articles/100", nil), expectedBody: `article ID:100`, }, { name: "BAD_REQUEST", rec: httptest.NewRecorder(), req: httptest.NewRequest("PUT", "/articles/bad", nil), expectedBody: fmt.Sprintf("%s\n", http.StatusText(http.StatusBadRequest)), }, } for _, test := range tests { t.Run(test.name, func(t *testing.T) { // Add path variables to the request context rctx := chi.NewRouteContext() rctx.URLParams.Add("articleID", "1") test.req = test.req.WithContext(context.WithValue(test.req.Context(), chi.RouteCtxKey, rctx)) ArticleCtx(http.HandlerFunc(GetArticleID)).ServeHTTP(test.rec, test.req) if test.expectedBody != test.rec.Body.String() { t.Errorf("Got: \t\t%s\n\tExpected: \t%s\n", test.rec.Body.String(), test.expectedBody) } }) } }</code>
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!