2012-06-08 22 views
6

यह आपको अपनी NServiceBus हैंडलर यह परीक्षण करने के लिए के लिए निर्भरता इंजेक्षन करने के लिए कैसे अपेक्षा की जाती है मुझे बहुत पसंद नहीं है। क्या इसे निजी रूप से निजी रूप से रखने और इसे कन्स्ट्रक्टर के अंदर असाइन करने का कोई तरीका है, ताकि कार्यान्वयन केवल हैंडलर कन्स्ट्रक्टर के माध्यम से पारित किया जाना चाहिए?निर्भरता इंजेक्शन

धन्यवाद

उत्तर

5

आप निम्न सिंटैक्स का उपयोग करके निर्माता इंजेक्शन का उपयोग कर सकते हैं:

Test.Handler<YourMessageHandler>(bus => new YourMessageHandler(dep1, dep2)) 

कहाँ dep1 और dep2 सभी संभावना में बस कुछ स्टब्स हैं या जो अपने मजाक ढांचे आप के लिए पकाया का मजाक उड़ाता है।

- यहां से उदी दहन से अपडेट किया गया:

आप Test.Bus के माध्यम से मज़ाक उड़ाया बस उदाहरण पहुँच सकते हैं।

+0

मैंने इस दृष्टिकोण की कोशिश की, लेकिन समस्या यह है कि मेरे हैंडलर की आईबीस संपत्ति इस मामले में शून्य हो जाती है, मुझे इसे ठीक से शुरू करने की आवश्यकता है – YMC

+0

क्या आपका मतलब हैंडलर में आईबीस का संदर्भ देना? क्या इसके लिए एक कन्स्ट्रक्टर पैरामीटर जोड़ना संभव नहीं है? आपको 'सार्वजनिक YourMessageHandler (IDependency dep1, IOtherDependency dep2, IBus Bus)' के प्रभाव के लिए बस कुछ करने में सक्षम होना चाहिए और बस इसे वहां से असाइन करें। क्षमा करें अगर मुझे कुछ स्पष्ट याद आ रही है, तो मुझे पहले कभी इसके संदर्भों के संदर्भ में कोई समस्या नहीं आई है। – tmesser

+0

सही, हैंडलर बस के अंदर। सैंड <> (...) का उपयोग किया जाता है, इसलिए मुझे इसके निष्पादन को सत्यापित करने की आवश्यकता है। समस्या यह है कि मुझे नहीं पता कि आईबीस प्रकार की संपत्ति को कैसे चालू किया जाए, इसे एनएस सर्विसबस द्वारा जादुई रूप से किया जाना चाहिए, मुझे इंटरफ़ेस का कोई भी सार्वजनिक कार्यान्वयन भी नहीं दिखाई देता है, वहां कोई 'बस' कक्षा या कुछ नहीं है। मेरा मतलब है कि यह एनएस सर्विसबस लाइब्रेरी – YMC