मैं वास्तव में XUnit के सिद्धांतों के साथ ऑटोफिक्चर की शक्ति की सराहना करता हूं। मैंने हाल ही में encapsulating customizations का उपयोग अपनाया है और उन्हें एक विशेषता के माध्यम से अपने परीक्षणों में उपलब्ध कराया है।ऑटोफिक्चर के लिए मेरे कस्टम सिद्धांत डेटा विशेषता बनाने के लिए मैं कैसे स्थिरता को संशोधित कर सकता हूं?
कुछ मौकों पर, मुझे अपना परीक्षण चलाने के लिए एक ऑफ-ऑफ परिदृश्य की आवश्यकता है। जब मैं उपरोक्त की तरह ऑटोडॉमेन्टडेटा एट्रिब्यूट का उपयोग करता हूं, तो क्या मैं एक आईफिक्शन मांग सकता हूं और विशेषता द्वारा बनाई गई एक ही घटना प्राप्त करने की उम्मीद करता हूं?
मेरे परिदृश्य में, मैं संग्रह के लिए डिफ़ॉल्ट रूप से एकाधिक अनुकूलन का उपयोग कर रहा हूं, हालांकि, इस मामले में, मुझे केवल एक ही आइटम अपने एसयूटी के कन्स्ट्रक्टर को भेजा जाना चाहिए। तो, मैं तो जैसे अपने परीक्षण विधि परिभाषित किया है:
[Theory, AutoDomainData]
public void SomeTest(IFixture fixture) {
fixture.RepeatCount = 1;
var sut = fixture.CreateAnonymous<Product>();
...
}
दुर्भाग्य से, मैं एक अपवाद गुमनाम उत्पाद बनाते समय हो रही है। अन्य परीक्षण ठीक काम करते हैं, अगर मैं उन गुणों के साथ एक विधि पैरामीटर के रूप में एक उत्पाद के लिए पूछता हूं। यह इस विशेष मामले में केवल एक मुद्दा है, जहां मैं उम्मीद कर रहा हूं कि स्थिरता पैरामीटर मेरे AutoDomainDataAttribute द्वारा बनाया गया वही है।
उत्पाद का कन्स्ट्रक्टर ऑटोडॉमेन्टडाटा के माध्यम से मेरे द्वारा रखे गए अनुकूलन के कारण सामान्य रूप से 3 आइटमों के साथ पॉप्युलेट हो जाता है जो एक आईनेमेरेबल की अपेक्षा करता है। वर्तमान में, मेरा डोमेन कस्टमाइज़ेशन उस क्रम में एकाधिक अनुकूलन और AutMoqCustomization से बना एक समग्र अनुकूलन है।
अपवाद है: "अमान्य कैस्ट अपवाद: 'उत्पाद' टाइप करने के लिए 'Castle.Proxies.ObjectProxy' प्रकार की ऑब्जेक्ट डालने में असमर्थ।"
धन्यवाद, मार्क। मैंने तुरंत पोस्ट करने के बाद अनिवार्य परीक्षण दृष्टिकोण पर स्विच किया। हालांकि विकल्प को जानना अच्छा होता है। अंत में, मेरा विशेष परीक्षण यह सुनिश्चित कर रहा है कि अंतिम श्रेणी को उत्पाद से हटाया नहीं जा सकता है (कम से कम एक होना चाहिए)। यह एकमात्र समय है जिसे मुझे 'रिपेटकाउंट' को नियंत्रित करने के लिए भी आवश्यक है। एक बार फिर धन्यवाद! – ventaur
क्या आपने अभी तक 'श्रेणियां हटा दी नहीं हैं।गणना करें() - 1' आइटम पहले आपके परीक्षण सेटअप के हिस्से के रूप में, और तब परीक्षण किया गया कि केवल एक बाएं के साथ, आप अंतिम को हटा नहीं सकते? –
हां, मुझे ऐसा लगता है। हम प्रोग्रामर कभी-कभी जटिल चीजों से पीड़ित होते हैं। :-) – ventaur