Testen von Chi-Routen mit Pfadvariablen: Fehlerbehebung und Lösungen
In Go-Chi wird der Zugriff auf Pfadvariablen innerhalb von Routen durch Middleware-Funktionen wie erleichtert ArtikelCtx. Beim Testen solcher Routen ist es wichtig, die Pfadvariable im Kontext der HTTP-Anfrage manuell festzulegen. Dies liegt daran, dass der Kontext nicht automatisch vom httptest-Paket gefüllt wird.
Problem:
Um eine Route zu testen, die Pfadvariablen verwendet, wird eine Testanforderung mit httptest.NewRequest erstellt. Die Ausführung der ArticleCtx-Middleware während des Tests gibt jedoch einen HTTP-Fehler (Unprocessable Entity) zurück, der darauf hinweist, dass der Pfadvariablenkontext nicht verfügbar ist.
Lösung:
Die Lösung liegt manuell Hinzufügen des Pfadparameters zum Anforderungskontext, bevor er an den Handler übergeben wird:
<code class="go">// Create a context with the path variable req := httptest.NewRequest("GET", "/articles/1", nil) rctx := chi.NewRouteContext() rctx.URLParams.Add("articleID", "1") // Set the RouteCtx in the request context req = req.WithContext(context.WithValue(req.Context(), chi.RouteCtxKey, rctx)) // Execute the handler with the modified request rec := httptest.NewRecorder() ArticleCtx(http.HandlerFunc(GetArticleID)).ServeHTTP(rec, req)</code>
Durch Hinzufügen der Pfadvariablen zum Kontext der Anforderung kann die ArticleCtx-Middleware die Artikel-ID korrekt abrufen und so den Fehler „Unprocessable Entity“ beheben.
Zusätzliche Best Practices:
Das obige ist der detaillierte Inhalt vonSo testen Sie Go-Chi-Routen mit Pfadvariablen: Beheben von nicht verarbeitbaren Entitätsfehlern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!