मुझे "नई एपीआई" (सर्विसस्टैक.ServiceInterface.Service से विरासत) का उपयोग करके सर्विसस्टैक का उपयोग करके बनाए गए कुछ सेवा वर्गों के लिए यूनिट परीक्षण (एनयूनीट का उपयोग करके) लिखने में रूचि है। ऐपहोस्ट का उपयोग करते हुए एएसपी.NET एप्लिकेशन में होस्ट किए जाने पर डीबी प्रॉपर्टी ठीक तरह से ऑटो वायर्ड होती है, लेकिन उस वातावरण के बाहर चलते समय मुझे उचित तकनीक का पता लगाना प्रतीत नहीं होता है। मैं सर्विसस्टैक में विभिन्न परीक्षण-संबंधित नामस्थानों और कक्षाओं को देखता हूं लेकिन एक स्पष्ट उदाहरण नहीं मिल सकता है जहां एक सेवा की डीबी संपत्ति इंजेक्शन दी जा रही है, केवल कनेक्शन फैक्ट्री को सीधे स्थापित करने के विरोध में और फिर विभिन्न आईडीबीकनेक्शन एक्सटेंशन विधियों को कॉल करना (सम्मिलित करना , चयन करें, आदि)।यूनिट परीक्षण ServiceStack.OrmLite एनयूनीट के साथ जब मैं सेवा कक्षाओं में डीबी इंजेक्ट करता हूं?
मैं ServiceStack.ServiceInterface.Testing.TestBase से अपने परीक्षण वर्ग इनहेरिट होने और इसके कॉन्फ़िगर विधि एक IDbConnectionFactory रजिस्टर करने के लिए (का उपयोग करते हुए ": स्मृति:") अधिभावी की कोशिश की है मेरी TestFixtureSetUp में OrmLiteConfig.DialectProvider = SqliteDialect.Provider;
स्थापित करने के साथ ही, है, लेकिन मैं जारी रखने के लिए मेरी सेवा विधियों को कॉल करते समय NullReferenceException प्राप्त करने के लिए (ServiceStack.ServiceInterface.Service.get_Db() पर। ऐसा लगता है कि फंक कंटेनर ऑटो-वायरिंग कुछ भी नहीं है।
SQLite ही ठीक से जो मैं सरल इकाई परीक्षण है कि मेरी सेवा कक्षाओं में नहीं जाते और बस प्रत्यक्ष IDbConnection कॉल कर इस बात की पुष्टि करने में सक्षम हूँ की स्थापना की है,।
मुझे क्या याद आ रही है?
संपादित
ऐसा लगता है कि इकाई परीक्षण ServiceStack सेवाओं, हालांकि ऐसा लगता है कि वहाँ क्रमबद्धता लागत (DirectServiceClient उपयोग करने से बचें के लिए सेट अप करने के लिए तरीके हैं, एक मेजबान और एक ग्राहक के अस्तित्व की आवश्यकता है जैसा कि here दिखाया गया है) - हालांकि मैं अपने मामले में काम करने में सफल नहीं हुआ हूं। मैं इसे AppHostHttpListenerBase दृष्टिकोण का उपयोग करके काम करने में कामयाब रहा (देखें here) हालांकि यह इकाई इकाई की तुलना में एकीकरण परीक्षण अधिक है (और तदनुसार धीमा है)।
यह पूरी तरह से काम किया! धन्यवाद! मुझे अपने अपेक्षित अपवादों में से एक को रैपर (WebServiceException) से वापस आंतरिक (HttpError) में परिवर्तित करना था, लेकिन यह समझ में आता है कि अब मैं एक सेवा क्लाइंट के माध्यम से नहीं जा रहा हूं। –