2010-08-25 7 views
9

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

सुविधाओं मैं सबसे एक HttpContext आवरण और नकली ढांचे में देखने में रुचि हूँ में शामिल हैं:

  • धारावाहिक सत्र भंडारण (जैसे, .Session)।
  • सीरियलाइज्ड एप्लिकेशन-स्कोप्ड स्टोरेज (उदाहरण के लिए, .Application)।
  • प्रति-अनुरोध आइटम संग्रहण (उदा।, .Items)।
  • एचटीपीआरक्वेट डेटा, जैसे रेफरर्स, अनुरोध यूरी, सर्वर वैरिएबल, पोस्ट डेटा इत्यादि।
  • एचटीपी रेस्पॉन्स डेटा, जैसे स्टेटस कोड और सामग्री।
  • स्थानीय फ़ाइल रिज़ॉल्यूशन (उदा। Server.MapPath)
  • एप्लिकेशन-रिश्तेदार यूआरएल पथ रिज़ॉल्यूशन के लिए वर्चुअलपाथ उपयोगिता, जो एएसपी.नेट रनटाइम पर निर्भरता है।
  • प्रमाणीकरण/प्रमाणीकरण नियमों को सत्यापित करने के लिए पहचान और प्रिंसिपल (उदा।, .User)।
  • AllErrorsHttpModule एस और Global.asax में त्रुटि समाधान का परीक्षण करने के लिए संग्रह।

मैंने अपना इंटरफ़ेस, रैपर और नकली लिखने पर विचार किया; हालांकि, मुझे विश्वास है कि ऐसा पहले से मौजूद होना चाहिए। नकली ढांचे की विविधता अवशोषित करने के लिए पहली बार टाइमर के लिए थोड़ा जबरदस्त है।

सबसे व्यापक HttpContext रैपर और नकली क्या है जो आप सुझाएंगे?

उत्तर

2

मेरी कंपनी ने सभी http objcets (IHttpRequest, IHttpResponse, आदि) के लिए इंटरफेस बनाने के साथ अच्छा प्रदर्शन किया है।

यह थोड़ा सा दोहराव है लेकिन मूल रूप से इंटरफ़ेस पर सभी विधियों और गुणों की आवश्यकता है, फिर प्रत्येक के लिए एक ठोस प्रकार बनाएं जो वास्तविक प्रकार को कन्स्ट्रक्टर पैरामीटर के रूप में लेता है और वास्तविक ऑब्जेक्ट के माध्यम से सभी विधियों और गुणों को पास करता है।

तो फिर तुम .. RhinoMocks या जो कुछ भी का उपयोग कर आसानी से सब कुछ परीक्षण कर सकते हैं

+0

ऐसा प्रतीत होता है कि आप सबसे सही हैं। .NET 3।5 'HttpContextBase' पेश करता है, लेकिन इससे पहले, मजाक करना कस्टम रैपर के साथ ही संभव था। मुझे लगता है कि बेहतर स्वचालित कार्यात्मक परीक्षण की सुविधा के लिए एचटीपी कॉनटेक्स्ट के लिए एक अच्छी तरह से डिज़ाइन किए गए नकली रैपर को देखना फायदेमंद होगा। मैं अपनी आँखें बाहर रखूंगा। – kbrimington

1

moq ढांचे को देखें। यह मॉकिंग फ्रेमवर्क है जो एमवीसी टीम का उपयोग करता है और इसे प्रवेश के लिए सबसे कम बाधा रखने के लिए कई (स्वयं सहित) पर विचार किया जाता है। MvcContrib प्रोजेक्ट में मॉकिंग हेल्पर्स भी देखें।

+0

सवाल ASP.NET MVC के लिए नहीं है, लेकिन ASP.NET वेब प्रपत्र के लिए। एमवीसी के लिए, HTTP संदर्भ का मज़ाक करना आसान है। :) – bzlm

+0

ओह - मैं सही खड़ा हूं। –

+0

यहां नीचे वोटों की कोई आवश्यकता नहीं है। मैं moq पर एक नज़र डालेंगे। पारंपरिक एएसपी.नेट में एमवीसी कोंट्रिब कक्षाओं का उपयोग करना संभव/व्यावहारिक है? – kbrimington