web services एक बिज़टक अनुरोध-प्रतिक्रिया पोर्ट द्वारा भस्म वेबसर्विजिंग मजाक कर रहा है




web-services mocking (6)

मैं BizUnit का उपयोग कर रहा हूँ यूनिट-परीक्षणों को मेरे बिज़्टकॉक आर्केस्ट्रेशन, लेकिन कुछ आर्केस्ट्रेशन एक वेबसर्विज का उपभोग करते हैं, और इन परीक्षणों को यूनिट परीक्षण की तुलना में अधिक एकीकरण परीक्षण की तरह लगता है।

मैं एक Windows प्रपत्र अनुप्रयोग से वेब सेवा का परीक्षण करने के लिए, उत्पन्न प्रॉक्सी ऑब्जेक्ट्स का नकली करने के लिए एक मजाकिया ढांचे का उपयोग करने से परिचित हूं, लेकिन मैं इसे अनुरोध-प्रतिक्रिया पोर्ट में एक अधिक एकीकृत तरीके से करने में सक्षम होना चाहता हूं ?

आप इस समस्या का कैसे सामना करेंगे?


मुझे थोड़ी देर में ऐसा करना नहीं पड़ा है, लेकिन जब मैं अपने बिजटॉक एप्लिकेशन का परीक्षण करता हूं तो मैंने हमेशा साबुन यूआई या वेब सेवा स्टूडियो का इस्तेमाल किया। मैं प्रयास के बिना अलग इनपुट मूल्यों का परीक्षण करने में सक्षम था।


बिज़ यूनेट एक्सटेन्शन्स (www.codeplex.com/bizunitextensions) के सह-लेखक के रूप में मैं सहमत हूं कि बिज़ यूनेट में नाम "इकाई" भ्रामक हो सकता है लेकिन बिज़्टकॉक के लिए, 'एकीकरण परीक्षण' इकाई परीक्षण है स्कीमा और मानचित्रों का परीक्षण करने के लिए कुछ बिज़टक लोक ने सफलतापूर्वक पाइप लाइन घटकों और अन्य टेस्ट हार्नेस (+ BizUnit / Extensions) का परीक्षण करने के लिए मोजे का इस्तेमाल किया है।

आर्केस्ट्रेशन दुर्भाग्य से अपारदर्शी हैं I लेकिन इसके लिए अच्छे कारण हैं।

(ए) संदेश बॉक्स में भारी सदस्यता प्रणाली की वजह से - जब कि सक्रियण आदि सक्रिय हो जाते हैं, आर्केस्टेशन होस्ट करने के लिए कुछ "आभासी" प्रक्रिया को आग लगाना संभव नहीं है (जो पाइपलाइनों के लिए किया जा सकता है।) टॉमस रेस्ट्रेपो ने किया है इन पंक्तियों के साथ कुछ)

(बी) इसके अलावा, यह कैसे वर्चुअल प्रक्रिया हठ और निर्जलीकरण को संभालता है? मैं दांव लगाता हूं कि WF का इस्तेमाल करने वाले लोगों को वर्कफ़्लो पूरी तरह से परीक्षण करने की कोशिश करने में एक ही समस्या होगी।

(सी) हम सीधे # सी के साथ काम नहीं करते हैं, इसलिए हम ऑर्कस्ट्रेशन कोड में एक नकली इंटरफ़ेस "इंजेक्ट" कर सकते हैं।

(डी) एक आर्केस्ट्रा वास्तव में एक "इकाई" नहीं है इसका एक समग्र तत्व इकाइयां संदेश संदेश और संदेश बॉक्स और बाहरी आकृतियों से अभिव्यक्ति आकृतियों के माध्यम से जा रही संदेश हैं। तो भी अगर आप एक नकली webservice इंटरफ़ेस इंजेक्ट कर सकते हैं आप नकली संदेश बॉक्स और सहसंबंध सेट और अन्य चीजों को इंजेक्ट नहीं कर सकते।

एक वस्तु जो आर्केस्ट्रेशन के लिए किया जा सकता है (और मैं यह करने के लिए BizUnitExtensions पुस्तकालय के अतिरिक्त विचार कर रहा हूं) ऑर्केस्ट्रेसप्रोफाइल उपकरण के साथ लिंक करना है क्योंकि उस उपकरण ने सभी आकृतियों की एक विस्तृत विस्तृत रिपोर्ट दी है और किसी भी तरह उस व्यक्ति की जांच करें कदम निष्पादित (और शायद निष्पादन के लिए लिया समय) यह ऑर्केस्ट्रेस को एक सफ़ेद बॉक्स के थोड़ा और अधिक बनाने में काफी दूर जा सकता है.इसके अलावा यह भी मानना ​​है कि ऑर्केस्ट्रेशन डीबगर कई वैरिएबल मानों को दिखाता है, निश्चित रूप से एपीआई के माध्यम से यह जानकारी प्राप्त करने के लिए संभव है कि वे दर्शकों के मूल्यों को दिए गए उदाहरण के लिए दिए गए बिंदु पर थे

रिचर्ड के सवाल पर वापस, हालांकि, मेरे पिछले देव टीम का समाधान था मूल रूप से हमने जो भी किया था वह सामान्य विन्यास एचटीटीपीहैंडलर लिखना था जो आने वाली सेवा अनुरोधों को पार्स करता है और पूर्व-सेट प्रतिक्रियाओं को वापस लौटाता है। ऐसी स्थिति के आधार पर वापस भेजा गया जवाब कॉन्फ़िगर करने योग्य था जैसे कि XPath। बिल्ड और देव बाइंडिंग फाइल्स में, वेबसाइज़र एंड पॉइंट नकली था। यह वास्तविक तीसरे पक्ष के webservices से बिल्ड और देव परिवेश को अलग करने में शानदार ढंग से काम किया। इससे "अनुबंध पहले" दृष्टिकोण में भी मदद मिली, जहां हमने नकली और ओर्च विकासकर्ता का निर्माण किया था, जबकि इसका उपयोग वेबसाइजर लेखक ने आगे किया और वास्तविक सेवा का निर्माण किया।

[अपडेट: 17-एफईबी -0 9: यह टूल अब कोडप्लेक्स पर है: http://www.codeplex.com/mockingbird यदि यह दृष्टिकोण दिलचस्प लग रहा है, इसे बाहर की जाँच करें और मुझे बताएं कि आप उपकरण के बारे में क्या सोचते हैं]

अब, इससे पहले कि कोई व्यक्ति पुराने "मोक ऑब्जेक्ट फ़्रेमवर्क" में चेस्टनट को फेंकता है, मुझे यह कहना चाहिए कि उपरोक्त उपयोग बिस्तकाक 'उपभोक्ताओं' के साथ-साथ गैर बिज़्टेक उपभोक्ताओं के लिए भी किया गया था, लेकिन मैंने भी एनएमक 2 के साथ काम किया है और यह पाया कि CLR उपभोक्ताओं को लिखते समय नकली इंटरफेस और अपेक्षाओं को सेट करने का एक शानदार तरीका हो (मैं जल्द ही म्यूक्यू और टाइप मॉक आदि में देख रहा हूं)। हालांकि, यह ऊपर बताए गए कारणों के लिए आर्केस्ट्रेशन के साथ काम नहीं करता है।

उम्मीद है की यह मदद करेगा।

सादर,

Benjy


अस्वीकरण: मैं टाइपामॉक पर काम करता हूं।

मुझे यकीन नहीं है कि आपको क्या करना है, लेकिन मुझे लगता है कि निम्न लिंक एक अच्छी शुरुआत है:


इसे करने का यही तरीका है:

रिचर्ड के सवाल पर वापस, हालांकि, मेरे पिछले देव टीम का समाधान था मूल रूप से हमने जो भी किया था वह सामान्य विन्यास एचटीटीपीहैंडलर लिखना था जो आने वाली सेवा अनुरोधों को पार्स करता है और पूर्व-सेट प्रतिक्रियाओं को वापस लौटाता है। ऐसी स्थिति के आधार पर वापस भेजा गया जवाब कॉन्फ़िगर करने योग्य था जैसे कि XPath


मत करो।

मनमानी इंटरफेस के खिलाफ परीक्षण न करें, और उनके लिए नकली बनाना न करें।

ज्यादातर लोग डेवलपर (यूनिट) परीक्षण को देखते हैं जैसे नॉटिवालिअल, कार्यक्षमता की एक-एक इकाइयां जैसे कि एक एकल कक्षा के परीक्षण के लिए। दूसरी तरफ, प्रमुख उप-प्रणालियों या पूरे सिस्टम के ग्राहक (स्वीकृति / एकीकरण) परीक्षण करने के लिए भी महत्वपूर्ण है

एक वेब सेवा के लिए, कार्यात्मकता की गैरकानूनी इकाई वर्गों में छिपी होती है जो संचार वायरी के पीछे वास्तव में सार्थक सेवा करते हैं। उन कक्षाओं में अलग-अलग डेवलपर टेस्ट क्लास चाहिए जो कि उनकी कार्यक्षमता को सत्यापित करते हैं, लेकिन पूरी तरह से बिना किसी वेब सेवा उन्मुख संचार वायरी के। स्वाभाविक रूप से, लेकिन शायद स्पष्ट रूप से नहीं, इसका मतलब है कि कार्यशीलता के आपके कार्यान्वयन को आपके वायरिंग के कार्यान्वयन से अलग होना चाहिए। इसलिए, आपके डेवलपर (इकाई) परीक्षणों को कभी भी उस विशेष संचार वायिंग में से किसी को नहीं देखना चाहिए; यह एकीकरण का हिस्सा है और इसे "व्यावसायिक तर्क" के बजाय "प्रस्तुति" के रूप में देखा जा सकता है (उचित)।

ग्राहक (स्वीकृति / एकीकरण) परीक्षणों को बहुत अधिक कार्यक्षमता को संबोधित करना चाहिए, लेकिन फिर भी "प्रस्तुति" मुद्दों पर केंद्रित नहीं होना चाहिए। यह वह जगह है जहां मुखौटा पैटर्न का उपयोग आम है - एक एकीकृत, मोटे-दाढ़ी, परीक्षणयोग्य इंटरफ़ेस के साथ एक सबसिस्टम को उजागर करना। फिर, वेब सेवा संचार एकीकरण अप्रासंगिक है और इसे अलग से लागू किया जाता है

हालांकि, यह एक अलग सेट परीक्षण को कार्यान्वित करने के लिए बहुत उपयोगी है जो वास्तव में वेब सेवा एकीकरण शामिल करते हैं। लेकिन मैं उस एकीकरण के केवल एक तरफ का परीक्षण करने के लिए दृढ़ता से सुझाव देता हूं: यह अंत-टू-एंड परीक्षण करें इसका अर्थ है कि ऐसे परीक्षण परीक्षण जो वास्तविक सेवा कोड की तरह वेब सेवा ग्राहक हैं; उन्हें वेब सेवाओं को बिल्कुल वास्तविक तरीके से उपभोग करना चाहिए, जो कि वास्तविक अनुप्रयोग (एस) करता है, जिसका अर्थ है कि ये टेस्ट उन उदाहरणों के लिए उदाहरण के रूप में काम करते हैं, जिन्हें ऐसे अनुप्रयोगों को लागू करना चाहिए (जैसे कि आप अपने लाइब्रेरी को बेच रहे हैं)।

तो, यह सब परेशान क्यों हो?

  1. आपका डेवलपर परीक्षण यह सत्यापित करता है कि आपकी कार्यक्षमता छोटे-छोटे काम करती है, चाहे उसे कैसे पहुंचा जा सके (प्रस्तुति स्तर से स्वतंत्र होने के बाद से यह व्यवसाय तर्क स्तर के अंदर है)।

  2. आपके ग्राहक परीक्षण यह सत्यापित करते हैं कि आपकी कार्यशीलता आपके व्यापार तर्क स्तर से इंटरफेस सीमा पर, बड़े पैमाने पर फिर से, फिर भी इस पर ध्यान दिए बिना कैसे उपयोग की जाती है।

  3. आपका एकीकरण परीक्षण यह सत्यापित करता है कि आपकी प्रस्तुति स्तरीय आपके व्यावसायिक तर्क स्तर के साथ काम करती है, जो कि अब मान्य है क्योंकि अब आप अंतर्निहित कार्यक्षमता को अनदेखा कर सकते हैं (क्योंकि आपने इसे अलग से परीक्षण किया है)। दूसरे शब्दों में, ये परीक्षण एक सुंदर चेहरे (जीयूआई?) और एक संचार अंतरफलक (वेब ​​सेवाओं?) पर पतली परत पर केंद्रित हैं।

  4. जब आप अपनी कार्यक्षमता तक पहुंचने की एक और विधि जोड़ते हैं, तो आपको उस नए रूप में प्रवेश (प्रस्तुति स्तर) के लिए एकीकरण परीक्षण जोड़ना होगा। आपका डेवलपर और ग्राहक परीक्षण यह सुनिश्चित करते हैं कि आपकी मुख्य कार्यक्षमता अपरिवर्तित और अटूट है।

  5. आपको किसी विशेष उपकरण की ज़रूरत नहीं है, जैसे विशेषकर वेब सेवाओं के लिए एक परीक्षण उपकरण। आप उपकरण / घटकों / पुस्तकालयों / तकनीकों का उपयोग करते हैं जो आप उत्पादन कोड में उपयोग करेंगे, ठीक उसी प्रकार जैसे आप उन्हें ऐसे उत्पादन कोड में उपयोग करेंगे। यह आपके परीक्षणों को अधिक सार्थक बनाती है, क्योंकि आप किसी और के उपकरण का परीक्षण नहीं कर रहे हैं। यह आपको बहुत समय और धन बचाता है, क्योंकि आप विशेष उपकरण खरीदने, तैनाती, विकास और बनाए रखने नहीं कर रहे हैं। हालांकि, अगर आप GUI के माध्यम से परीक्षण कर रहे हैं (ऐसा मत करो!), तो आपको उस हिस्से के लिए एक विशेष उपकरण की आवश्यकता हो सकती है (जैसे, एचटीटीपीयूएनआईटी?)।

तो, चलो ठोस हो मान लें कि हम कैफेटेरिया के दैनिक मेनू का ट्रैक रखने के लिए कुछ कार्यक्षमता प्रदान करना चाहते हैं ('कारण हम एक मेगा-कॉर्प में अपने स्वयं के कैफे में काम करते हैं, जैसे मेरा खदान)। मान लें कि हम सी # को लक्षित कर रहे हैं

हम मेनू, मेनू आइटम, और अन्य ठीक-ठाक कार्यशीलता और इसके संबंधित डेटा के लिए कुछ सी # कक्षाएं बनाते हैं। हम nUnit का उपयोग करते हुए डेवलपर परीक्षणों को निष्पादित करने वाले एक स्वचालित बिल्ड की स्थापना (आप ऐसा करते हैं, है ना?), और हम पुष्टि करते हैं कि हम एक दैनिक मेनू बना सकते हैं और इन सभी छोटे टुकड़ों के माध्यम से इसे देख सकते हैं।

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

अब हम तय करते हैं कि आज के कैफेटेरिया मेनू की जांच के लिए हम हमारे मेगा-कॉर्प ज्ञान श्रोताओं के लिए एक वेब पेज प्रदान करना चाहते हैं। हम एक एएसपी.एन.टी. पेज लिखते हैं, यह हमारे मुखौटा वर्ग को जोड़ता है (जो हमारे मॉडल बन जाता है अगर हम एमवीसी कर रहे हैं), और इसे लागू करें चूंकि हम पहले से ही हमारे ग्राहक परीक्षणों के माध्यम से मुखौटा कक्षा का परीक्षण कर चुके हैं, और चूंकि हमारे एकल वेब पेज इतने सरल हैं, हम वेब पेज के खिलाफ स्वचालित टेस्ट लिखना छोड़ देते हैं - मैन्युअल परीक्षण कुछ साथी ज्ञान श्रोताओं का उपयोग करके चाल करेंगे।

बाद में, हम कुछ प्रमुख नई कार्यक्षमता को जोड़ना शुरू करते हैं, जैसे कि दिन के लिए हमारे दोपहर का भोजन पूर्व निर्धारित करने में सक्षम होना। हम अपने ठीक-ठीक कक्षाएं और संबंधित डेवलपर परीक्षणों का विस्तार करते हैं, यह जानते हुए कि हमारे पूर्व-मौजूदा परीक्षण हमें मौजूदा कार्यक्षमता को तोड़ने से रोकते हैं। इसी तरह, हम अपने मुखौटा वर्ग को बढ़ाते हैं, शायद एक नया वर्ग (जैसे, मेनू फीकाडे और ऑर्डरफ़ाकेड) को भी विभाजित करते हैं क्योंकि इंटरफ़ेस बढ़ता है, हमारे ग्राहक परीक्षणों के समान जोड़ के साथ।

अब, शायद, वेबसाइट में परिवर्तन (दो पृष्ठ एक वेबसाइट है, है ना?) मैनुअल परीक्षण असंतोषजनक बनाने के लिए इसलिए, हम एचटीटीपीयूएनआईटी के तुलनीय तुलना में एक सरल उपकरण लाएंगे जो एनयूआईएनटी को वेब पेजों का परीक्षण करने की अनुमति देता है। हम एकीकरण / प्रस्तुति परीक्षणों की एक बैटरी को लागू करते हैं, लेकिन हमारे मुखौटा वर्गों के एक नकली संस्करण के खिलाफ, क्योंकि यहां केवल बात है कि वेब पेज काम करते हैं - हम पहले से ही जानते हैं कि मुखौटा कक्षाएं काम करती हैं टेस्ट धक्का और नकली facades के माध्यम से डेटा खींचें, केवल परीक्षण करने के लिए कि डेटा सफलतापूर्वक दूसरे पक्ष के लिए इसे बनाया और कुछ नहीं।

बेशक, हमारी भव्य सफलता सीईओ को अनुरोध (मांग) करने का अनुरोध करती है कि हम मेगा-कॉर्प के ब्लैकबेरी के लिए वेब एप्लिकेशन को बेनकाब करते हैं। इसलिए हम कुछ नए पृष्ठों और एकीकरण परीक्षण की एक नई बैटरी को लागू करते हैं। हमें डेवलपर या ग्राहक परीक्षणों को छूने की आवश्यकता नहीं है, क्योंकि हमने कोई नई मुख्य कार्यक्षमता नहीं जोड़ा है

अंत में, सीटीओ अनुरोध (मांग) है कि हम सभी मेगा-कॉर्प के रोबोट श्रमिकों को हमारे कैफेटेरिया आवेदन का विस्तार करते हैं - आपने पिछले कुछ दिनों में उन्हें नोटिस किया था? तो, अब हम वेब सेवाओं के स्तर को जोड़ते हैं जो हमारे मुखौटा के माध्यम से संचार करता है दोबारा, हमारी मूल कार्यक्षमता, हमारे डेवलपर परीक्षण, या हमारे ग्राहक परीक्षणों में कोई बदलाव नहीं। हम क्लास बनाकर एडेप्टर / आरेख पैटर्न को लागू करते हैं जो मुखौटा को एक समान वेब सेवा एपीआई के साथ बेनकाब करते हैं, और हम उस एपीआई का उपभोग करने के लिए क्लाइंट साइड कक्षाएं बनाते हैं। हम एकीकरण परीक्षण की एक नई बैटरी जोड़ते हैं, लेकिन वे क्लाइंट-साइड एपीआई कक्षाएं बनाने के लिए सादे एनयूआईएनटी का उपयोग करते हैं, जो सेवा-साइड एपीआई कक्षाओं को वेब सेवा के तारों पर संवाद करते हैं, जो नकली मुखौटा वर्गों को आमंत्रित करते हैं, जो पुष्टि करते हैं कि हमारे तारों का काम करता है।

ध्यान दें कि इस संपूर्ण प्रक्रिया के दौरान, हमें अपने उत्पादन मंच और कोड से परे कुछ भी, हमारे चयनित विकास प्लेटफॉर्म, स्वचालित निर्माण और परीक्षण के लिए कुछ खुले स्रोत घटकों और परीक्षणों की कुछ अच्छी तरह से परिभाषित बैटरी की आवश्यकता नहीं थी। यह भी ध्यान रखें कि हमने कुछ भी नहीं परीक्षण किया, जिसका हम उत्पादन में उपयोग नहीं करते, और हमने दो बार कुछ भी परीक्षण नहीं किया।

हमने कार्यक्षमता (व्यावसायिक तर्क स्तर) के एक ठोस कोर के साथ समाप्त कर दिया है, जो परिपक्व (हाइपरेटिक रूप से) सिद्ध कर चुका है। हमारे पास तीन अलग प्रस्तुति स्तरीय क्रियान्वयन हैं: डेस्कटॉप पर लक्षित वेबसाइट, ब्लैकबेरी पर लक्षित एक वेबसाइट और वेब सेवा एपीआई

अब, कृपया मुझे लंबे समय के उत्तर के लिए क्षमा करें - मैं अपर्याप्त उत्तर के टायर और मैं एक को प्रदान नहीं करना चाहता था। और कृपया ध्यान दें कि मैंने वास्तव में ऐसा किया है (हालांकि कैफेटेरिया मेनू के लिए नहीं)।


यह एक बिज़टेक डेवलपर के रूप में मेरे मुख्य आक्षेपों में से एक के दिल में जाता है - बिज़टैक स्वयं को इकाई परीक्षण के लिए उधार नहीं देता है तथ्य से आपके इंटरफेस का 99% अनुप्रयोग बिज़-टॉक में संदेश आधारित है और ऑर्क्रेस्ट्रेशन के अपारदर्शी प्रकृति के माध्यम से संभव आदानों की एक बड़ी संख्या है, BizTalk कार्यक्षमता की इकाइयों का परीक्षण करने का कोई वास्तविक तरीका नहीं है ... अच्छा ... इकाइयों।

बिज़टॉक के लिए, शहर में एकीकरण परीक्षण अक्सर एकमात्र खेल होता है।

इसका परिणाम केविन स्मिथ की ओर से कोई दोष नहीं होने के कारण, बिज़ यूनिट (आईएमओ) एक मिथ्या नाम है एक बेहतर नाम संभवत: बिज़ इन्टेक्टीमेंट होगा। BizUnit एक ऐसी श्रेणी प्रदान करता है जो एकीकरण परीक्षण में सहायता करते हैं, इसके अधिकांश परीक्षण, जैसे कि किसी फ़ाइल को दी गई निर्देशिका में लिखी गई है या किसी HTTP रिक्ति को एक HTTP रिक्ति में भेजना है, यह सब कड़ाई से बोल रहा है, परीक्षण एकीकरण है।

अब जब मैं उस शेख़ी को मिल गया है, जो आप के लिए पूछ रहे हैं वह कुछ है जो मैं लंबे समय से सोच रहा था, स्वचालित इकाई परीक्षण बनाने की क्षमता से कुछ वास्तविक विश्वास होता है कि मेरे नक्शे में एक छोटा परिवर्तन करने के लिए जीता '' कुछ और डाउनस्ट्रीम को तोड़ने के साथ-साथ बाहरी सेवाओं पर निर्भरता को दूर करने का एक तरीका भी है।

मैंने ऐसा करने के किसी भी अच्छे तरीके से कभी नहीं सोचा है, लेकिन नीचे एक समाधान है जो काम करना चाहिए , मैंने इसके प्रत्येक भाग में अलग-अलग बदलाव किए हैं, लेकिन कभी भी इस विशिष्ट रूप में कोशिश नहीं की, लेकिन उन सभी को एक साथ मिला।

इसलिए कुछ बाह्य सेवा (जो अभी भी अस्तित्व में नहीं हो सकता है) को वास्तव में किसी बाहरी कॉल को बनाने और उस सेवा कॉल की अपेक्षाओं को सेट करने और प्रतिक्रिया की प्रकृति को निर्दिष्ट करने की क्षमता रखने की इच्छा के लिए कॉल करने की इच्छा प्रदान करने के लिए, एकमात्र तरीका जो मैं सोच सकता हूँ एक कस्टम एडाप्टर विकसित करना है।

कस्टम एडॉप्टर का उपयोग करते हुए नकली webservice

यदि आप एक कस्टम अनुरोध-प्रतिक्रिया एडाप्टर बनाते हैं तो आप इसे SOAP एडाप्टर के स्थान पर अपने प्रेषित पोर्ट में प्लग कर सकते हैं। इसके बाद आप एडेप्टर के लिए गुण निर्दिष्ट कर सकते हैं जो इसे आपके वेबसेवरी के नकली रूप में व्यवहार करने की अनुमति देता है। एडेप्टर अवधारणा में एक लूपबैक अडैप्टर के समान होगा लेकिन आंतरिक मजाकिया तर्क की अनुमति देगा।

ऐसी चीजें जिन्हें आप एडाप्टर गुणक के रूप में शामिल करना चाहें:

  • अपेक्षित दस्तावेज़ (संभवत: एक डिस्क स्थान जो कि आपके BizTalk applicaiton को webservice पर भेजने की अपेक्षा का उदाहरण निर्दिष्ट करता है)।
  • रिस्पांस दस्तावेज़ - दस्तावेज़ जो एडेप्टर संदेश इंजन को वापस भेज देगा।
  • परीक्षण के लिए विशिष्ट उम्मीदें जैसे दस्तावेज़ तत्वों में लुकअप मान

आपके पास कस्टम एडेप्टर भी डिस्क पर लिख सकता है और उस फ़ाइल को मान्य करने के लिए BizUnit चरण सेटअप किया जा सकता है जो लिखा गया था।

एक कस्टम एडाप्टर बनाना गैर तुच्छ है, लेकिन संभव है, आप BizTalk एडाप्टर विज़ार्ड से एक अच्छी शुरुआत प्राप्त कर सकते हैं और यहां कस्टम एडेप्टर की तैनाती पर एक लेख है

विज़ार्ड द्वारा उत्पन्न कोड में एक बग है, आपको new Guid(""), को बदलना होगा new Guid(""), जो new Guid()

BizTalk SDK में कस्टम एडाप्टर बनाने के कुछ उदाहरण भी हैं।

एक अन्य विकल्प के लिए एक सादा http पृष्ठ और HTTP अनुरोध की प्रतिक्रिया का उपयोग करना है जैसा कि यहां चर्चा की गई है , आपका सभी तर्क http पृष्ठ में जाता है। यह संभवतः सरल होता है यदि आप एक एचटीटीपी कॉल करते हुए खुश हैं, और आईआईएस पोर्ट को अपने परीक्षण के लिए सुनना चाहते हैं।

यूनिट परीक्षण आरंभ करना

आप .bat फ़ाइल का उपयोग करके बाइज़िंग फ़ाइलों को एक BizTalk एप्लिकेशन में आयात कर सकते हैं।

यदि आप प्रत्येक परीक्षण के लिए एक नई बाध्यकारी फाइल बनाते हैं, साथ ही साथ अपने मानक एप्लिकेशन सेट अप के लिए, तो आप सही बाइंडिंग लागू करने के लिए उचित बैच फ़ाइल चला सकते हैं।

नकली कस्टम एडाप्टर का उपयोग करने के लिए प्रत्येक बाध्यकारी फ़ाइल आपकी वेबसाइस्पिपोर्ट को बदल देती है और उस टेस्ट के लिए विशिष्ट गुण सेट करती है।

फिर आप एक कस्टम BizUnit चरण भी बना सकते हैं (शायद) परीक्षण चरण में सेटिंग्स के आधार पर बाध्यकारी सेटिंग्स जेनरेट की गई और फिर बाइनिंग्स को अपडेट करने के लिए शेल कमांड चलाया।

परीक्षण संदेश सामग्री

अंतिम बात यह है कि आप पर विचार करना चाहें, वास्तव में यह सब एक साथ बाँध सकते हैं, संदेशों की सामग्री का परीक्षण करने का कोई तरीका है आप अपने नकली एडॉप्टर में ऐसा कर सकते हैं, लेकिन यह बड़ी संदेश के लिए, या संभव इनपुट संदेशों की एक बड़ी रेंज के लिए बहुत तेज़ हो जाएगा।

एक विकल्प एक कस्टम पाइपलाइन बनाने के लिए होता है जो Schematron को प्राप्त करने वाली फ़ाइलों को मान्य करता है स्कीमाट्रान एक स्कीमा भाषा है जो फाइल निरीक्षण के एक बहुत अधिक अमीर स्तर की अनुमति देता है जो एक्सएसडी, ताकि आप "अगर तत्व x में यह सामग्री शामिल हो, तो मुझे उम्मीद है कि तत्व मौजूद होगा" जैसी चीजों की जांच कर सकते हैं।

यदि आपने एक कस्टम पाइप लाइन बनाई है, जिसमें एक पैरामीटर के रूप में स्कीमाट्रान स्कीमा बनाई गई थी, तो आप एक विशिष्ट इकाई परीक्षण के लिए एक परीक्षण फ़ाइल में स्वैप कर सकते हैं, इस परीक्षण के लिए मान्य करते हुए, जब आप वेबसाईट को कॉल करते हैं, तो आपको वह फ़ाइल मिलती है जो वास्तव में आप से मेल खाती है (और सिर्फ एक्सएसडी से मेल नहीं खाती)