मेरे अधिकांश अनुप्रयोगों में, मेरे पास डिस्क से विभिन्न सेटिंग्स को पढ़ने के लिए एक सिंगलटन या स्टेटिक "कॉन्फिग" ऑब्जेक्ट है। लगभग सभी वर्ग विभिन्न प्रयोजनों के लिए इसका उपयोग करते हैं। अनिवार्य रूप से यह सिर्फ नाम / मूल्य जोड़े की हैश तालिका है। यह केवल पढ़ने के लिए है, इसलिए मैं इस तथ्य से बहुत चिंतित नहीं हूं कि मेरे पास इतना वैश्विक राज्य है। लेकिन अब जब मैं यूनिट परीक्षण के साथ शुरू कर रहा हूं, तो यह एक मुद्दा बनने लगा है।
एक समस्या यह है कि आप आमतौर पर उसी कॉन्फ़िगरेशन के साथ परीक्षण नहीं करना चाहते हैं जिसे आप चलाते हैं। इस के लिए कुछ उपाय हैं:
- कॉन्फ़िगर ऑब्जेक्ट को एक सेटर दें जो केवल परीक्षण के लिए उपयोग किया जाता है, इसलिए आप विभिन्न सेटिंग्स में पास कर सकते हैं।
- किसी एकल कॉन्फ़िग ऑब्जेक्ट का उपयोग करना जारी रखें, लेकिन इसे एक सिंगलटन से एक ऐसे उदाहरण में बदलें, जिसे आप हर उस जगह से गुजरते हैं, जिसकी उसे ज़रूरत है। फिर आप इसे एक बार अपने आवेदन में, और एक बार अपने परीक्षण में, विभिन्न सेटिंग्स के साथ बना सकते हैं।
लेकिन किसी भी तरह से, आप अभी भी दूसरी समस्या से बचे हुए हैं: लगभग कोई भी वर्ग कॉन्फिग ऑब्जेक्ट का उपयोग कर सकता है। इसलिए एक परीक्षण में, आपको परीक्षण किए जाने वाले वर्ग के लिए कॉन्फ़िगरेशन सेट करने की आवश्यकता है, लेकिन इसके सभी निर्भरताएं भी। यह आपके परीक्षण कोड को बदसूरत बना सकता है।
मैं इस निष्कर्ष पर आना शुरू कर रहा हूं कि इस तरह की कॉन्फिग ऑब्जेक्ट एक बुरा विचार है। तुम क्या सोचते हो? कुछ विकल्प क्या हैं? और आप हर जगह कॉन्फ़िगरेशन का उपयोग करने वाले एप्लिकेशन को कैसे फिर से शुरू करना चाहते हैं?