में टेस्टेबल कोड कैसे लिखें, इसलिए मेरा यह प्रश्न तब शुरू हुआ जब मैंने postNotification
और addObserver
की एक साधारण 2 लाइन के लिए यूनिट परीक्षण करना शुरू किया। इस तरह के प्रश्न से here आप देख सकते हैं कि इसे टेस्ट करने योग्य बनाने के लिए आपको ~ 20 लाइन & को अपने कोड लिखने के सामान्य तरीके से दूर करने की आवश्यकता है।स्विफ्ट
इस समस्या का सामना करना वास्तव में पहली बार यूनिट परीक्षण और टीडीडी के बीच अंतर को समझ गया था। यूनिट परीक्षण आसान है यदि आपका कोड टेस्ट करने योग्य है यानी यदि आप टीडीडी मानसिकता का पालन कर रहे हैं। इसके बाद मुझे लाया गया कि मैं टेस्टेबल कोड कैसे लिख सकता हूं, जिसे मुझे ज्यादा दिशानिर्देश नहीं मिलते थे, हर ट्यूटोरियल बस यूनिट टेस्ट लिखने में कूदता है। ऐप्पल के पास documentation इसके लिए कुछ भी नहीं है।
मेरा प्रारंभिक विचार यह था कि मुझे 'कार्यात्मक प्रोग्रामिंग' का लक्ष्य रखना है और pure function तरीके से अपने कार्यों को लिखना है। लेकिन फिर फिर यह बहुत समय ले रहा है और मौजूदा कोडों में या फिर भी नई परियोजनाओं के लिए बहुत सी लाइनों के लिए बहुत से रिफैक्टरिंग की आवश्यकता हो सकती है और मुझे यह भी सुनिश्चित नहीं है कि that is the correct approach है। क्या एक आसान तरीके से टेस्टेबल कोड लिखने के लिए कोई सुझाए गए दिशानिर्देश या मानक हैं?
मुझे पहले से ही क्या पता है: मुझे पता है कि आपको कोई कोड नहीं लिखना चाहिए, जब तक कि असफल होने के लिए कोई परीक्षण न हो, इसलिए मूल रूप से मुझे पहले परीक्षण लिखना होगा और जैसे ही मुझे कोई त्रुटि मिलती है, यहां तक कि एक कंपाइलर त्रुटि भी मुझे परीक्षण की जाने वाली वास्तविक कक्षा में वापस स्विच करना होगा और जो भी आवश्यक हो, लिखने के लिए मेरा टेस्ट कोड कोई त्रुटि न दें, फिर टेस्ट क्लास पर वापस स्विच करें और मेरा परीक्षण लिखना जारी रखें और संकलन त्रुटियों को ठीक करने तक जारी रखें। फिर परीक्षण चलाएं और देखें कि क्या यह जांचता है कि मैं इसे जांचना चाहता हूं।
सभी परीक्षणों के लिए मुझे यह सुनिश्चित करना चाहिए कि मेरे परीक्षण पास हो जाएंगे और असफल हो जाएंगे जहां मैं असफल होने की उम्मीद करता हूं यानी विफल होने की उम्मीद होने पर परीक्षण पास होगा।
मुझे नहीं पता कि मैं प्रक्रिया को और अधिक आसान तरीके से कैसे सुगम बना सकता हूं।
मैं NSNotificationCenter के लिए एक टेस्टेबल कोड लिखने के लिए नहीं कह रहा हूं, मैं टेस्टेबल कोड लिखने के लिए सामान्य दिशानिर्देश मांग रहा हूं।
मुझे लिंक के माध्यम से जाना होगा। इसमें थोड़ा वक्त लगेगा। क्या आप परीक्षण के लिए एक खराब कोड का उदाहरण दे सकते हैं और अच्छे कोड के लिए एक और परीक्षण कर सकते हैं और यह भी उल्लेख कर सकते हैं कि हमें मॉकिंग को आसान बनाना चाहिए? – Honey
मैं यह समझने के लिए कुछ और विस्तार में अपनी प्रतिक्रिया के माध्यम से पढ़ने का सुझाव दूंगा कि यह क्यों है कि मैं आपको एक बुरे और अच्छे उदाहरण के साथ पेश नहीं करूंगा (मैं आपको एक संकेत दूंगा, आप समस्या को अधिक बढ़ा रहे हैं) :-) तो, मैं सुझाव है कि आप पृष्ठभूमि पढ़ते हैं - इस मामले पर कौशल और अनुभव धोखा देने का कोई तरीका नहीं है। – mz2
ठोस के लिए आपका पहला लिंक इसके अंत में '' 'गायब है। मैंने लिंक के माध्यम से पढ़ा और विश्वास किया कि आप मुझे लिखने के मार्ग में मार्गदर्शन कर रहे हैं। क्या आप सटीक रूप से यह निर्धारित कर सकते हैं कि आपको पोस्ट यूनिटेशन, AddObserver का पता लगाने वाले पते इकाई को क्या करना है। क्या कोई लिंक पता है? मेरी चिंता का समाधान करते हुए, मैंने पहले ही अपने प्रश्न में एक लिंक शामिल किया है। पीएस मुझे लगता है कि स्विफ्ट डिजाइन पैटर्न लिंक मुझे कुछ समय के लिए व्यस्त रखेगा – Honey