/ / क्लोजर में दुष्प्रभाव कार्यों के यूनिट परीक्षण कैसे करें? - इकाई परीक्षण, परीक्षण, क्लोजर, दुष्प्रभाव, core.async

क्लोजर में दुष्प्रभाव कार्यों के यूनिट परीक्षण कैसे करें? - इकाई परीक्षण, परीक्षण, क्लोजर, दुष्प्रभाव, core.async

यह सवाल विशिष्ट पुस्तकालयों के बारे में नहीं है(हालांकि उनमें से कुछ अंत में उपयोग किए जाएंगे), लेकिन साइड इफेक्ट्स फ़ंक्शन यूनिट परीक्षण को संभव बनाने के लिए अपने एप्लिकेशन कोड को कैसे व्यवस्थित करना है इसके बारे में अधिक जानकारी। अगर हमें यह सब करना चाहिए?

जाहिर है, शुद्ध दुष्प्रभाव मुक्त कार्यों के परीक्षण करने के लिए यह स्पष्ट और सरल है, आप इनपुट पास करते हैं, और आप आउटपुट पर जोर देते हैं।

परीक्षण, इकाई और एकीकरण के 2 (बहुत मोटे तौर पर) प्रकार हैं। यहां यूनिट परीक्षण पर ध्यान केंद्रित करने दें।

इसलिए, यदि आपके पास कोई फ़ंक्शन है जो फ़ाइल से पढ़ता है या फ़ाइलों में लिखता है (उपयोग कर रहा है slurp/spit, उदाहरण के लिए), या डेटाबेस, या रिंग अनुप्रयोग, या core.async चैनल के साथ काम करते हैं, क्लोजर में ऐसी चीजों के यूनिट परीक्षण कैसे करें? क्या मॉक्स शामिल हैं, यदि हां, तो उन्हें कैसे परिभाषित किया जाना चाहिए? वहां हैं binding, with-{redefs, redefs-fn, local-vars} शामिल? मुझे परिभाषित करना चाहिए defprotocol यूनिट परीक्षण के दौरान कार्यान्वयन (उर्फ मॉक?) कार्यान्वयन के लिए?

परीक्षण के मूल्य में से एक (मुख्य मूल्य?) आवेदन कोड पर एक बेहतर डिज़ाइन को मजबूर करना है, इसलिए क्लोजर में परीक्षण उस अर्थ में विशेष है, कि क्लोजर में साइड इफेक्ट्स फ़ंक्शन यूनिट परीक्षण करने के लिए आपको एप्लिकेशन कोड विशिष्ट तरीके से संरचना करने के लिए मजबूर होना पड़ता है?

या मैं पूरी तरह से बिंदु याद आती है?

पीएस .1: मैं क्लोजर छोटे / मध्यम आकार के अनुप्रयोगों (निश्चित रूप से अभी भी जाने का एक तरीका) के साथ काम कर रहा हूं और विकास कर रहा हूं, हालांकि परीक्षण भाग अभी भी मुझे पूरी तरह से स्पष्ट नहीं है।

पीएस.2: क्लोजर में एक और बड़ा विषय एकीकरण परीक्षण है, लेकिन यह एक अलग SO प्रश्न के लायक होगा।

उत्तर:

उत्तर № 1 के लिए 1

आम तौर पर आप साइड इफेक्ट्स के साथ कोड का परीक्षण अपने परीक्षणों के लिए सेटअप और टियरडाउन कलाकृतियों को कार्यान्वित कर रहे हैं। ये आधार / प्रारंभिक स्थिति बनाते हैं और परिणामों का मूल्यांकन करने में सहायता करते हैं।


उत्तर № 2 के लिए 1

मैं आपको दृढ़ता से प्रोत्साहित करने के लिए प्रोत्साहित करता हूं with-redefs और अगर संभव हो तो दोस्तों। हम बाह्य सेवाओं और निर्भरता के साथ हमारे सभी इंटरैक्शन के लिए प्रोटोकॉल का उपयोग हर जगह इंजेक्ट करते हैं, इसलिए परीक्षण एक हवा है। बेशक, हम अभी भी जितना संभव हो सके शुद्ध और सावधानीपूर्वक कार्य करने की कोशिश करते हैं, लेकिन आम तौर पर जब आवश्यक हो तो हम प्रोटोकॉल से खुश होते हैं।