„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Testen Sie die Go-CHI-Pfadvariablen-Routing: Lösen

Testen Sie die Go-CHI-Pfadvariablen-Routing: Lösen

Gepostet am 2025-04-18
Durchsuche:506

How to Test Go-Chi Routes with Path Variables:  Resolving Unprocessable Entity Errors

testen Chi-Routen mit Pfadvariablen: Fehlerbehebung und Lösungen

In Go-Chi, Pfadvariablenzugriff in Routen werden ermöglicht. Beim Testen solcher Routen ist es wichtig, die Pfadvariable im Kontext der HTTP -Anforderung manuell festzulegen. Dies liegt daran, dass der Kontext nicht automatisch durch das Httptest -Paket besiedelt wird.

Problem:
Um eine Route zu testen, die Pfadvariablen verwendet, wird eine Testanforderung mit httptest erstellt. Die Ausführung der Articlectx -Middleware während des Tests gibt jedoch einen HTTP -Fehler zurück (unverarbeitbare Entität) und zeigt an, dass der Pfadvariable -Kontext nicht verfügbar ist. Kontext mit der Pfadvariablen req: = httptest.newRequest ("get", "/articles/1", nil) rctx: = chi.newrouteContext () rctx.urlparams.add ("articleId", "1") // Setzen Sie den Routectx im Anforderungskontext fest req = req.withcontext (context.withValue (req.context (), chi.routectxkey, rctx)) // Führen Sie den Handler mit der geänderten Anfrage aus rec: = httptest.newRecorder () Articlectx (http.handlerfunc (getArticleId)). ServeHttp (rec, req)

durch Hinzufügen der Pfadvariablen in den Kontext der Anfrage kann der Articlectx -Middleware die Artikel id korrekt abrufen, das nicht -optimale Entitätsfehler beheben. Praktiken:

betrachten einen Test -Framework wie Testify für vereinfachte Unit -Tests.
// 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)

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3