c# - Make sure/check if property is selected in linq .Select() statement with unit test? -


मान लें कि मेरे पास निम्न श्रेणी है:

  सार्वजनिक वर्ग व्यक्ति {सार्वजनिक स्ट्रिंग प्रथम नाम {get ;;} सार्वजनिक स्ट्रिंग LastName {get; set;} सार्वजनिक आईएनजी {get; set;}}  

मान लें कि मुझे यह प्रश्न है:

  Var व्यक्ति = someListOfPersons.Where (r = & gt; r.Age & gt; 18)। चुनें (m = & gt; नया व्यक्ति () {LastName = m.LastName});  

जैसा कि हम ऊपर देख सकते हैं, मैं केवल LastName संपत्ति वास्तव में चयनित के साथ नए व्यक्ति वस्तुओं का चयन कर रहा हूं I ध्यान दें कि इस समय यह अभी भी एक IQueryable है

मैं यह कैसे परीक्षण कर सकता हूं, यह सुनिश्चित करने के लिए कि LastName संपत्ति को चयनित बयान में शामिल किया गया है?

मैं उस कोड के टुकड़े के वास्तविक व्यवहार का परीक्षण करने पर ध्यान केंद्रित करूँगा जिसे आप अपने सार्वजनिक अनुबंध के माध्यम से परीक्षण करने का प्रयास कर रहे हैं लौटने वाली वस्तुओं के प्रकार जैसे कार्यान्वयन के विवरणों का परीक्षण करना, चाहे एक गेटोर कहा जाता है, आदि आपके परीक्षणों को क्रियान्वयन के बहुत करीब से जोड़ता है, जिसका मतलब है कि कोड में कोई भी परिवर्तन परीक्षणों में बदलाव की आवश्यकता होगी। यह ऐसा कुछ है जिसे आप कम करना चाहते हैं, या अपने यूनिट परीक्षण को बनाए रखने की लागत बढ़ जाएगी। आप कार्यान्वयन विवरण के बजाय परीक्षण व्यवहार के बारे में एक अच्छा लेख पा सकते हैं।

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


Comments

Popular posts from this blog

python - Overriding the save method in Django ModelForm -

html - CSS autoheight, but fit content to height of div -

qt - How to prevent QAudioInput from automatically boosting the master volume to 100%? -