2012-09-05 18 views
5

में मान डालता है क्योंकि मैं वेब अनुप्रयोग विकास के लिए बिल्कुल नया हूं, मुझे वर्तमान में कुछ परीक्षण कार्यक्षमता को लागू करने में कुछ कठिनाई हो रही है।यूआरएल पैरामीटर के माध्यम से एक टेस्टमोड बनाना जो

परियोजना मैं वर्तमान में (भुगतान के प्रसंस्करण के लिए एक MVC 3 वेब एप्लिकेशन) काम कर रहा हूँ मैं एक testmode जो इस तरह से यूआरएल के माध्यम से पहुँचा जा सकता है बनाने के लिए कहा गया है के भाग के रूप:

http://websiteurl?testmode=1 

इसके पीछे विचार यह है कि जब विकास टीम में से एक यूआरएल में टेस्टमोड पैरामीटर जोड़ता है तो फॉर्म मानों का एक सेट स्वचालित रूप से उत्पन्न होता है ताकि प्रत्येक बार एप्लिकेशन का परीक्षण किया जा सके।

वर्तमान में मैं एक है, तो नियंत्रक जो नीचे पैरामीटर सेट करने के लिए Request.QueryString का उपयोग करता है में बयान कोड है कि मैं इस समय का उपयोग कर रहा है:

if (Request.QueryString.AllKey.Contains("tm")) 
{ 
    if (Request.QueryString["tm"] == 1) 
    { 
     insert values to be generated 
    } 
} 

संदर्भ यदि कोई सबसे अच्छा तरीका होगा क्या यह देखते हुए इसे प्राप्त करने के लिए?

क्या एमक्यू या राइनोमोक्स जैसे मॉकिंग फ्रेमवर्क का उपयोग करना संभव है, एक डेटाबेस से परिणाम पुनर्प्राप्त करने के बजाय नकली भंडार बनाने के लिए या डेटाबेस में प्रीलोड किए जाने वाले परीक्षण डेटा बेहतर होगा?

उत्तर

2

साथ शुरू करने के लिए मैं आपके "टेस्टमोड" चेक को समाहित कर दूंगा।

मैं एक आधार नियंत्रक बनाना होगा और और जोड़ने के निम्नलिखित संपत्ति:

// I would consider retrieving this from web.config 
protected string testModeKey = "tm"; 

public bool IsTestContext 
{ 
    get 
    { 
     return Request.QueryString[testModeKey] != null; 
    } 
} 

वैकल्पिक रूप से, HttpRequest के लिए एक विस्तार विधि लिखने पर विचार:

public static bool IsTestContext(this HttpRequest request, string testModeKey = "tm") 
{ 
    request.QueryString[testModeKey] != null; 
} 

इस तरह से बाहर है। आइए सोचें कि हम मूल्य कैसे सम्मिलित कर सकते हैं। मैं यहां कुछ धारणाएं कर रहा हूं, लेकिन मुझे नियंत्रक इकाई-टेस्टेबल बनाने में दिलचस्पी होगी।

मुझे लगता है कि आपका डेटा कुछ IDataRepository से वापस कर दिया गया है और आपके पास भंडार के दो कार्यान्वयन हैं: FakeDataRepository और ReadDataRepository।

फिर आप यह तय करने के लिए कि कौन सा भंडार उपयोग करना है, एक कारखाना या साधारण ifelse कथन लिख सकता है।

IDataRepository DataRepository { get; set; } 

if (Request.IsTestContext) 
    DataRepository = new FakeDataRepository(); 
else 
    DataRepository = new RealDataRepository(); 

यह आप जो करना चाहते हैं उसके लिए काम करेगा, लेकिन यह मेरी राय में आगे बढ़ने का एक अच्छा तरीका नहीं है। मैं आपके नियंत्रकों की इकाई परीक्षण में देखता हूं। क्या आप इस बारे में अधिक जानकारी प्रदान कर सकते हैं कि आप क्या परीक्षण करना चाहते हैं, क्योंकि मैं यहां कुछ अनुमान और अनुमान लगा रहा हूं?

0

ताकि आप कैसे एप्लिकेशन को वर्तमान में बाहर रखी मैं नीचे दिए गए विवरण प्रदान की है है पर कुछ विवरण हैं:

आवेदन की बुनियादी संरचना परियोजना रेशम टेम्पलेट का पालन, व्यापार तर्क, डाटा में आवेदन टूट टियर, प्रेजेंटेशन और यूनिट टेस्ट, नियंत्रक जिसे मैं पहले से ही बेस नियंत्रक से विरासत में प्राप्त करता हूं, जिसमें नियंत्रक को कार्यान्वित किया जा रहा है, जिसमें वर्तमान में माइक्रोसॉफ्ट के कार्यान्वयन शामिल हैं। व्यवहार। सेवा स्थान पैटर्न।

सेवा लोकेटर बिजनेस लॉजिक डोमेन प्रोजेक्ट में मिली चार सेवाओं तक पहुंच प्रदान करता है, इनमें से तीन एक्सेस रिपॉजिटरीज जिनमें तीन ड्रॉप डाउन के लिए मूल्य शामिल हैं, भुगतान समाधान (ऋषि) के लिए लेनदेन सेवा के कार्यान्वयन की चौथी पहुंच की चौथी पहुंच है ऐप में एकीकृत यह SagePayMvc.dll का उपयोग करता है।

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

व्यापार तर्क में एक सेट मॉडल के दो सेट हैं और दूसरा डेटा टियर में, मॉडल लॉजिक डोमेन में आपके द्वारा परिभाषित मॉडल सत्यापन के साथ।

व्यू मॉडल जिसके माध्यम से मैं मॉडल तक पहुंचता हूं वर्तमान में डोमेन मॉडल का उपयोग कर रहा है।

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

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

मेरे पास वर्तमान में एक टेस्ट क्लास सेटअप है जो इस बात का परीक्षण कर रहा है कि छात्र रिपोजिटरी एक नया छात्र बना सकता है जिसे मैंने यहां परिभाषित किया है जो एमओक का उपयोग करके परिभाषित नकली भंडार तक पहुंचता है।

+0

यह भी ध्यान रखना चाहिए कि यह चार परीक्षण मोड में से एक होगा, एक यूएस में भुगतान के लिए मूल्यों के साथ फॉर्म को पॉप्युलेट करेगा, एक अलग डेटाबेस में मूल्यों को बचाता है और चौथा जिसे मैंने सफलता पृष्ठ पर रीडायरेक्ट पूरा कर लिया है – CryoFusion87

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