اختبار مسارات الطاقة مع متغيرات المسار
في go-chi، اختبار المسارات مع متغيرات المسار يمكن أن يشكل تحديات في البداية. ومع ذلك، من خلال استخدام التقنيات المناسبة، يمكنك كتابة اختبارات موثوقة بشكل فعال.
تنبع المشكلة من حقيقة أن قيم معلمات المسار لا يتم ملؤها تلقائيًا في سياق الطلب عند استخدام httptest.NewRequest. وهذا يتطلب إضافة يدوية لهذه المعلمات.
يتضمن أحد الأساليب إنشاء سياق طلب جديد وتعيين معلمات 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))
بدلاً من ذلك، من الممكن استخدام http.Handler مخصص يضيف قيم معلمات المسار تلقائيًا:
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)
تذكر استخدام المعالج المناسب أثناء الاختبار، مع التأكد من استدعاء كل من البرنامج الوسيط ArticleCtx والمعالج نفسه.باختصار، اختبار المسارات باستخدام متغيرات المسار في go-chi يتطلب الاهتمام بملء سياق الطلب بمعلمات URL المناسبة. وباستخدام هذه التقنيات سيمكنك من كتابة اختبارات دقيقة وفعالة. تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3