गो में स्थिरांक का परीक्षण
गो में, कोड स्थिरता और शुद्धता सुनिश्चित करने के लिए स्थिरांक एक मूल्यवान उपकरण हैं। हालाँकि, जब इकाई परीक्षण की बात आती है, तो स्थिरांक का उपयोग चुनौतियाँ पैदा कर सकता है। यह आलेख बताता है कि विशेष रूप से गो में परीक्षण उद्देश्यों के लिए स्थिरांक को कैसे फिर से परिभाषित किया जाए।
स्थिरांक के साथ चुनौती
गो में स्थिरांक अपरिवर्तनीय मान हैं जिन्हें प्रोग्राम निष्पादन के दौरान संशोधित नहीं किया जा सकता है। यह अपरिवर्तनीयता प्रोग्राम की स्थिति की अखंडता सुनिश्चित करती है और आकस्मिक परिवर्तनों को रोकती है। हालाँकि, परीक्षण के दौरान, विशिष्ट परिदृश्यों का परीक्षण करने के लिए स्थिरांक को अस्थायी रूप से संशोधित करना आवश्यक हो सकता है।
एक परीक्षण-अनुकूल दृष्टिकोण
निम्नलिखित उदाहरण पर विचार करें:
package main
const baseUrl = "http://google.com"
// in main_test.go
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
...
}))
const baseUrl = ts.URL // Error: const baseUrl already defined
इस उदाहरण में, हम परीक्षण के लिए रिमोट एपीआई को कॉल करने के बजाय एक परीक्षण सर्वर का उपयोग करना चाहते हैं। ऐसा करने के लिए, हमें परीक्षण सर्वर के यूआरएल के साथ बेसयूआरएल को फिर से परिभाषित करने की आवश्यकता है। हालाँकि, गो एक त्रुटि देता है क्योंकि स्थिर बेसयूआरएल पहले से ही परिभाषित है। एक अतिरिक्त फ़ंक्शन:
const BaseUrl_ = "http://google.com" func MyFunc() स्ट्रिंग { // कॉन्स्ट वैल्यू पास करते हुए अन्य फ़ंक्शन को कॉल करें myFuncImpl(baseUrl_) वापस करें } func myFuncImpl(बेसयूआरएल स्ट्रिंग) स्ट्रिंग { // बेसयूआरएल का उपयोग करें // वही कार्यान्वयन जो आपके मूल MyFunc() फ़ंक्शन में था }
इस रिफैक्टर कोड में, मूल MyFunc फ़ंक्शन इसके कार्यान्वयन को myFuncImpl को सौंपता है, जो एक बेसयूआरएल पैरामीटर लेता है। यह हमें परीक्षण फ़ंक्शन से सीधे myFuncImpl को कॉल करने और किसी भी वांछित आधार URL को पास करने की अनुमति देता है।const baseUrl_ = "http://google.com"
func MyFunc() string {
// Call other function passing the const value
return myFuncImpl(baseUrl_)
}
func myFuncImpl(baseUrl string) string {
// use baseUrl
// Same implementation that was in your original MyFunc() function
}
मूल MyFunc फ़ंक्शन सुरक्षित और अप्रभावित रहता है रिफैक्टरिंग। यह हमेशा स्थिरांक BaseUrl_ को myFuncImpl पर भेजता है, यह सुनिश्चित करते हुए कि संशोधित स्थिरांक के कारण उत्पादन कोड में अप्रत्याशित व्यवहार नहीं होता है।
निष्कर्ष
यह तकनीक डेवलपर्स को स्थिरांक को फिर से परिभाषित करने की अनुमति देती है उत्पादन कोड की अखंडता और सुरक्षा को बनाए रखते हुए परीक्षण उद्देश्यों के लिए। एक अतिरिक्त फ़ंक्शन पेश करके जो मूल के समान कार्यक्षमता प्रदान करता है, परीक्षण वास्तविक कोड के व्यवहार को प्रभावित किए बिना स्थिरांक को संशोधित कर सकते हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3