2011-03-19 15 views
10

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

OperationContext का उपयोग किए बिना मेरी सेवा की सदस्यता लेने पर मैं ग्राहकों के अंतराल को कैसे प्राप्त करूं?

एक तरफ थोड़ा सा लेकिन कोड नमूने दिखाने पर दिमाग में परीक्षण के साथ एक अच्छा डब्ल्यूसीएफ संसाधन कहां है? नमूना परीक्षण मामलों के बिना एक ही कोड दोहराते हुए वहां कई ब्लॉग हैं।

धन्यवाद।

उत्तर

7

माइक्रोसॉफ्ट डेवलपर्स वास्तव में sealed और static कीवर्ड (और साथ internal के रूप में) की तरह है और वे virtual से नफरत है। उस मानक परीक्षण दृष्टिकोण और framworks के कारण अक्सर काम नहीं करते हैं। आपके पास दो विकल्प:

  1. लपेटें कस्टम कक्षा में OperationContext के लिए उपयोग और अपनी सेवा के वर्ग का एक उदाहरण इंजेक्षन। इसमें अतिरिक्त कार्य शामिल होगा क्योंकि आपको अपनी सेवा के बाहर कहीं इंजेक्शन करने की आवश्यकता होगी। उदाहरण के लिए कन्स्ट्रक्टर इंजेक्शन को कस्टम IInstanceProvider की आवश्यकता होगी।
  2. अधिक शक्तिशाली परीक्षण ढांचे का उपयोग करें। Moles framework देखें जो कॉल को अवरुद्ध करने और उन्हें पुनर्निर्देशित करने में सक्षम है। यह मुहरबंद वर्गों और स्थिर तरीकों/गुणों को "मॉकिंग" करने में सक्षम बनाता है।

एक और दृष्टिकोण बस आपके कोड को पुनः सक्रिय कर रहा है। अपनी सेवा से सभी व्यावसायिक तर्क को अलग टेस्टेबल बिजनेस क्लास में ले जाएं और सेवा को केवल एकीकरण परीक्षण में भाग लेने दें। सेवा बुनियादी ढांचे की तरह है और सब कुछ वास्तव में इकाई परीक्षण की जरूरत नहीं है। एकीकरण/अंत-टू-एंड/व्यवहार परीक्षण भी परीक्षण और मान्य दृष्टिकोण है।

+0

अच्छा जवाब। ऐसा नहीं है कि मैं मोल्स ढांचे से छिपाने की कोशिश कर रहा हूं लेकिन मैं 'ऑपरेशन कॉन्टेक्स्ट' का नकल कैसे करूं? – gcso

+0

आप आम तौर पर 'ऑपरेशन कॉन्टेक्स्ट' को मॉक नहीं कर सकते (जब तक आप इसे लपेट नहीं लेते) लेकिन मॉल का उपयोग करते समय आप अपने स्वयं के तरीकों से ऑपरेशन कॉन्टेक्स्ट पर कॉल रीडायरेक्ट कर सकते हैं। कम से कम यह कुछ लेख पढ़ने के बाद उनके काम की समझ है। –

+0

यदि आप http://code.google.com/p/netfx/ पर एक नज़र डालते हैं, तो उनके पास उन सभी अपर्याप्त डब्ल्यूसीएफ कक्षाएं हैं जो आपके लिए अच्छी तरह से इंटरफेस और लपेटी गई हैं। –

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