हमने एक परीक्षण लिखा है जो निम्न जैसा दिखता है। इस परीक्षण की आवश्यकता है कि हम CodeTableItem
श्रेणी के लिए एन Equal
-overload बनाया है:[ऑटोफिक्स्चर] सेमेन्टिक कॉम्परिसन का चयन अनुक्रम/संग्रह/सरणी/आईनेमेरेबल
ICollection<CodeTableItem> expectedValutaList = new List<CodeTableItem>();
expectedValutaList.Add(new CodeTableItem("DKK", "DKK"));
expectedValutaList.Add(new CodeTableItem("EUR", "EUR"));
RepoDac target = new RepoDac();
var actual = target.GetValutaKd();
CollectionAssert.AreEqual(expectedValutaList.ToList(),actual.ToList());
परीक्षण ठीक काम करता है, लेकिन Equality
समारोह को दुर्भाग्यपूर्ण निर्भरता है, जिसका अर्थ है कि अगर मैं एक के साथ CodeTableItem
श्रेणी का विस्तार अधिक फ़ील्ड, और Equals
-फंक्शन का विस्तार करना भूल जाता है, यूनिट परीक्षण अभी भी हरा चलाता है, हालांकि हम सभी क्षेत्रों के लिए परीक्षण नहीं करते हैं। हम इस Equality
प्रदूषण से बचना चाहते हैं (Test Specific Equality देखें), जिसे केवल परीक्षण के अनुरूप लिखा गया है।
हम OfLikeness
उपयोग करने की कोशिश की है, और इस तरह से परीक्षण फिर से लिखा है:
ICollection<CodeTableItem> expectedValutaList = new List<CodeTableItem>();
expectedValutaList.Add(new CodeTableItem("DKK", "DKK"));
expectedValutaList.Add(new CodeTableItem("EUR", "EUR"));
var expectedValutaListWithLikeness =
expectedValutaList.AsSource().OfLikeness<List<CodeTableItem>>();
RepoDac target = new RepoDac();
ICollection<CodeTableItem> actual;
actual = target.GetValutaKd();
expectedValutaListWithLikeness.ShouldEqual(actual.ToList());
लेकिन परीक्षण में विफल रहता है क्योंकि Capacity
बराबर नहीं है। मैंने कोड लिखा है जो कई बार प्रतिबिंब के माध्यम से चलता है, और आमतौर पर फ़ील्ड को अनदेखा करने के लिए ओवरलोड को कार्यान्वित करता है। क्या OfLikeness
या ShouldEqual
के साथ कुछ फ़ील्ड को अनदेखा करने का कोई तरीका है? या इस मुद्दे को हल करने का कोई और तरीका है?
बहुत बहुत धन्यवाद, मार्क, उसने ऐसा किया! सुरुचिपूर्ण! –