2010-05-06 9 views
9

क्या ऑटोफ़ैक के पास स्ट्रक्चर मैप के AssertConfigurationIsValid विधि के बराबर है? या कंटेनर बनाते समय कॉन्फ़िगरेशन सत्यापन होता है?ऑटोफैक कॉन्फ़िगरेशन सत्यापन

मेरा मानना ​​है कि AssertConfigurationIsValid विधि जांचता है कि कंटेनर सभी कॉन्फ़िगर की गई सेवाएं बना सकता है। जाहिर है, यह स्कोप से संबंधित अधिक सूक्ष्म विन्यास गलतियों को नहीं उठा सकता है, उदाहरण के लिए - लेकिन यह जानना अच्छा होगा कि हम रनटाइम पर फसल पैदा करने वाले मुद्दों को रोकने के लिए जितना कर सकते हैं उतना कर रहे हैं।

उत्तर

6

मुझे नहीं लगता कि ऑटोफैक के पास सत्यापन है, और अगर किसी सेवा को हल नहीं किया जा सकता है तो अपवाद को रनटाइम पर फेंक दिया जाता है। यह शायद उपयोगी होगा लेकिन मैं हमेशा यूनिट परीक्षण लिखता हूं जो मेरे कंटेनर को मान्य करता है, या बल्कि मेरे modules में, उन सेवाओं को शामिल करता है जिनकी मुझे उम्मीद है। कंटेनर सत्यापन की कमी के लिए इकाई परीक्षण अधिक से अधिक है।

इन परीक्षणों को आम तौर पर

  1. के पैटर्न का पालन परीक्षण
  2. प्रत्येक आवश्यक सेवा के लिए, परीक्षण container.IsRegistered
  3. जब भी संभव हो, परीक्षण के अंतर्गत मॉड्यूल के साथ एक कंटेनर बनाएं container.Resolve
+0

मैं आसानी से आपके द्वारा सुझाए गए यूनिट परीक्षणों को लागू किया गया है, और अब मुझे बहुत परेशानी नहीं है कि ऑटोफैक में अंतर्निहित सत्यापन नहीं है। आपके उत्कृष्ट उत्तर के लिए धन्यवाद। – JulianM

+0

@ सेरिला - यह सुनकर खुशी हुई। सौभाग्य! –

+0

मैं उन सेवाओं के साथ ऐसा कैसे कर सकता हूं जहां मैं उन्हें उत्पन्न करने के लिए कारखानों का उपयोग करता हूं? जैसे मेरे पास एक सेवा है जो कुछ अन्य सेवाओं और एक स्ट्रिंग पर निर्भर करती है। वह स्ट्रिंग ऑटोफैक में पंजीकृत नहीं है और मैं आमतौर पर सेवा को हल करने के लिए पैरामीटर के रूप में उस स्ट्रिंग के साथ एक कारखाने का उपयोग करता हूं। वर्तमान में मेरा यूनिट परीक्षण इस कारखाने को अनदेखा करता है और सेवा पर विफल रहता है क्योंकि आवश्यक स्ट्रिंग पंजीकृत नहीं है। – SamuelDebruyn

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