पथ चर के साथ ची मार्गों का परीक्षण
गो-ची में, पथ चर के साथ मार्गों का परीक्षण शुरू में चुनौतियां पैदा कर सकता है। हालाँकि, उचित तकनीकों को नियोजित करके, आप प्रभावी ढंग से विश्वसनीय परीक्षण लिख सकते हैं।
समस्या इस तथ्य से उत्पन्न होती है कि httptest.NewRequest का उपयोग करते समय अनुरोध संदर्भ में पथ पैरामीटर मान स्वचालित रूप से पॉप्युलेट नहीं होते हैं। इसके लिए इन मापदंडों को मैन्युअल रूप से जोड़ने की आवश्यकता होती है।
एक दृष्टिकोण में एक नया अनुरोध संदर्भ बनाना और मैन्युअल रूप से यूआरएल पैरामीटर सेट करना शामिल है:
// 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)
परीक्षण के दौरान उपयुक्त हैंडलर का उपयोग करना याद रखें, यह सुनिश्चित करते हुए कि आर्टिकलसीटीएक्स मिडलवेयर और हैंडलर दोनों को ही बुलाया जाता है।
संक्षेप में, पथ चर के साथ मार्गों का परीक्षण गो-ची में उचित यूआरएल पैरामीटर के साथ अनुरोध संदर्भ को पॉप्युलेट करने पर ध्यान देने की आवश्यकता है। इन तकनीकों को नियोजित करने से आप सटीक और प्रभावी परीक्षण लिखने में सक्षम होंगे।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3