गो में लाइव अनुरोधों के साथ HTTP सर्वर का परीक्षण करना
आइसोलेशन में यूनिट परीक्षण हैंडलर आवश्यक है, लेकिन रूटिंग और अन्य मिडलवेयर के प्रभावों को नजरअंदाज किया जा सकता है . व्यापक परीक्षण के लिए, "लाइव सर्वर" दृष्टिकोण का उपयोग करने पर विचार करें।
httptest.Server के साथ लाइव सर्वर परीक्षण
net/http/httptest.Server प्रकार लाइव की सुविधा देता है सर्वर परीक्षण. यह दिए गए हैंडलर (इस मामले में, गोरिल्ला मक्स राउटर) का उपयोग करके एक सर्वर बनाता है। यहाँ एक उदाहरण है:
func TestIndex(t *testing.T) {
// Create server using the router initialized elsewhere.
ts := httptest.NewServer(router)
defer ts.Close()
newreq := func(method, url string, body io.Reader) *http.Request {
r, err := http.NewRequest(method, url, body)
if err != nil {
t.Fatal(err)
}
return r
}
tests := []struct {
name string
r *http.Request
}{
// Test GET and POST requests.
{name: "1: testing get", r: newreq("GET", ts.URL "/", nil)},
{name: "2: testing post", r: newreq("POST", ts.URL "/", nil)}, // reader argument required for POST
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
resp, err := http.DefaultClient.Do(tt.r)
defer resp.Body.Close()
if err != nil {
t.Fatal(err)
}
// check for expected response here.
})
}
}
ध्यान दें कि httptest.Server का उपयोग किसी भी हैंडलर का परीक्षण करने के लिए किया जा सकता है जो http.Handler इंटरफ़ेस को संतुष्ट करता है, न कि केवल गोरिल्ला mux को।
विचार
जबकि लाइव सर्वर परीक्षण अधिक यथार्थवादी परीक्षण प्रदान करता है, यह यूनिट परीक्षण की तुलना में धीमा और अधिक संसाधन-गहन भी हो सकता है। व्यापक परीक्षण रणनीति के लिए इकाई और एकीकरण परीक्षण के संयोजन पर विचार करें।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3