2014-09-23 5 views
10

मैंने टेस्ट करने योग्य एप्लिकेशन के लिए अपना रास्ता नकली, स्टब और फर्जी करने का प्रयास किया है। मैं आमतौर पर नियंत्रक कार्यों का परीक्षण नहीं करता, लेकिन इसके बजाय मेरे सभी अन्य वर्गों और पैटर्न का परीक्षण करता हूं।विशेषता रूटिंग के साथ एक एएसपी.नेट एमवीसी परियोजना का परीक्षण किया जा सकता है?

मैंने जिस दीवार को मारा वह नई विशेषता रूटिंग सुविधा के साथ था। जबकि मैं अपने नियमों को पंजीकृत करने के लिए रूटिंग कक्षाओं का उपयोग कर सकता हूं। मुझे यह त्रुटि तब मिलती है जब MapMvcAttributeRoutes कहा जाता है।

इस विधि आवेदन की पूर्व शुरू आरंभीकरण चरण

यह यहाँ पर चर्चा कर रहा है के दौरान नहीं कहा जा सकता।

MapMvcAttributeRoutes: This method cannot be called during the application's pre-start initialization phase

ईमानदारी से कहूं तो मैं इस सवाल का जवाब (रों) नहीं समझ सकता। नहीं कोड है, लेकिन संस्करणों में अपनी खंडित, अन्य कीड़े के लिए लिंक, GitHub आदि

मैं कर रहा हूँ एक सा लब्बोलुआब यह जवाब देने के लिए के रूप में खो दिया:

23 वें अक्टूबर के रूप में, 2014 क्या यह संभव है परीक्षण शर्तों के तहत सभी मार्गों को पंजीकृत करने के लिए, मुझे एमवीसी के किस संस्करण की आवश्यकता है और मैं कौन से वर्ग/विधियों को करने के लिए कहता हूं?

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

यह अच्छा होगा यदि इन ढांचा ही में एक साधारण सहायक कि एक JSON ऑब्जेक्ट एक कच्चे HTTP अनुरोध का वर्णन लेने के लिए और नियंत्रक, HttpContext, ControllerContext आदि आदि ठीक से बनाए गए के रूप में अगर यह थे सब हो सकता था था होगा तार से एक असली अनुरोध।

धन्यवाद,

ल्यूक

+0

हालांकि यह WebAPI के लिए है, यह मुझे लगता है कि whould काम करना चाहिए .. इसे इस्तेमाल करता है एक नकली UrlHelper ... http : //www.asp।नेट/वेब-एपीआई/ओवरव्यू/टेस्टिंग-एंड-डिबगिंग/यूनिट-टेस्टिंग-कंट्रोलर्स-इन-वेब-एपीआई –

+0

वर्तमान में, मैं या तो 'UrlHelper' का नकल करता हूं या मेरे पास एक लिंक का प्रतिनिधित्व करने के लिए' हाइपरलिंकमोडेल 'है और मैं सबक्लास मेरा 'हाइपरलिंक मॉडेलबिल्डर' और नकली मुख्य लिंक बिल्डिंग तर्क। –

उत्तर

4

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

I have a blog post here विषय पर मेरे अनुभवों पर। मैं यह भी सुझाव देता हूं कि आप भी campaign for better testability in ASP vNext in the public issue tracker

0

दैनिक स्टैंड-अप के दौरान, एक सहयोगी ने बताया कि वह एक इन-मेमोरी वेब सर्वर के माध्यम से एकीकरण परीक्षण था। चिंतित, उसने मुझे दिखाया कि मैं और मैं आश्चर्यचकित था, कुछ सीखा :-)

आप HttpServer उदाहरण को नया-अप कर सकते हैं और इसे अपनी कॉन्फ़िगरेशन पढ़ सकते हैं और फिर सर्वर इंस्टेंस का आह्वान कर सकते हैं। मैंने कोशिश नहीं की है, लेकिन मुझे कोई कारण नहीं दिख रहा है कि यह आपके मार्गों और कोड को उचित कॉन्फ़िगर करने की आवश्यकता क्यों नहीं करेगा, सभी काम करेंगे।

यह तो सवाल यह संबंधित है और इसे सेट अप करने के लिए में मदद मिल सकती है:

How does the In-Memory HttpServer know which WebAPI project to host?

+0

यह इसे एकीकरण परीक्षण के लिए कटौती कर सकता है, लेकिन यूनिट परीक्षण के लिए नहीं: सेटअप बहुत अधिक समय लेगा। – MarioDS

+0

हम किस यूनिट परीक्षण और अलगाव के बारे में दार्शनिक बहस कर सकते हैं, और आपके पास कुछ उचित अंक हो सकते हैं, लेकिन जहां तक ​​समय चल रहा है, हमने पाया कि यह ठीक था। –

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