2012-12-14 12 views
6

कृपया ध्यान दें, मैं टीडीडी के लिए कुछ नया हूं, इसलिए मैं सामान्य सलाह के साथ-साथ विशिष्ट उत्तर भी लेगा।क्या ऑटोमोक कस्टमाइज़ेशन सार वर्गों के लिए काम करता है?

न तो अमूर्त कक्षाएं और न ही इंटरफेस को तत्काल किया जा सकता है। स्पष्ट रूप से मोक मुझे दूसरे टेस्ट में एडीटाफिड का एक मजाकिया उदाहरण दे सकता है। ऑटोमोक कस्टमाइज़ेशन इंटरफेस IDataFeed के लिए क्यों काम करता है लेकिन अमान्य कक्षा ADataFeed के लिए नहीं, बल्कि अमान्यऑपरेशन अपवाद फेंकने के लिए क्यों?

दूसरा, ऑटोफिक्शन दृष्टिकोण (या टीडीडी आम तौर पर) एक ऐसा डिज़ाइन चलाने के लिए होगा जो एक कन्स्ट्रक्टर के साथ एक अमूर्त वर्ग के लिए कॉल कर सकता है ताकि कुछ मूल्यों की आवश्यकता हो और गारंटी हो सके, जैसे इस मामले में कनेक्शन स्ट्रिंग?

[Theory, AutoMoqData] 
public void AllDataFeedsHaveAConectionString(
    IDataFeed sut) 
{ 
    var result = sut.GetConnectionString(); 
    Assert.Null(result); 
} 

[Fact] 
public void AllDataFeedsRequireAConnectionString() 
{ 
    var expected = Guid.NewGuid().ToString(); 
    var sut = new Mock<ADataFeed>(expected); 
    var result = sut.Object.GetConnectionString(); 
    Assert.Equal(expected, result); 
} 

[Theory, AutoMoqData] 
public void AllDataFeedsRequireAConnectionString2(
    [Frozen] string expected, 
    ADataFeed sut) 
{ 
    var result = sut.GetConnectionString(); 
    Assert.Equal(expected, result); 
} 
+4

'ऑटोमोक कस्टमाइजेशन' सार आधार कक्षाओं के साथ-साथ इंटरफेस प्रदान कर सकता है। क्या 'एडाटाफिड' जनता का निर्माता है? यदि ऐसा है, तो इसे संरक्षित करें। यह एक अमूर्त वर्ग –

+0

पर एक सार्वजनिक निर्माता के साथ एक डिजाइन त्रुटि बहुत दिलचस्प है। ठीक है, moq अमूर्त वर्ग पर एक सार्वजनिक कन्स्ट्रक्टर संभालती है ... autofixture नहीं करता है। न तो एक निजी कन्स्ट्रक्टर के साथ काम करते हैं और जब यह संरक्षित होता है तो दोनों काम करते हैं। मैं इसके लिए अपना शब्द ले जाऊंगा कि यह एक डिजाइन त्रुटि है ... दूसरे दिन के लिए एक और सवाल। अंतरिम में मैं संरक्षित का उपयोग करूंगा। – cocogorilla

+0

एफटीआर: http://msdn.microsoft.com/en-us/library/vstudio/ms229047(v=vs.100).aspx –

उत्तर

1

रचनाकारों के साथ सार कक्षाओं को संरक्षित किया जाना चाहिए। जब निर्माता को सार्वजनिक रूप से चिह्नित किया जाता है, तो ऑटोफिक्चर अमूर्त वर्गों के खिलाफ प्रोग्राम नहीं करेगा, क्योंकि यह एक डिज़ाइन त्रुटि है।

संबंधित मुद्दे

 संबंधित मुद्दे