2009-07-17 18 views
6

मैं ControllerActionInvoker का उपयोग नियंत्रक कार्यों को लागू करने के साथ कार्रवाई को लागू करने के लिए फार्म इकाईControllerActionInvoker मापदंडों

var controllerInvoker = new ControllerActionInvoker(); 
var result = controllerInvoker.InvokeAction(
       testController.ControllerContext, "Default"); 

परीक्षण मैं इसका उपयोग कैसे करूँ एक कार्रवाई पैरामीटर है कि कॉल करने के लिए?

[AcceptVerbs(HttpVerbs.Post)] 
[ActionException(SomeAttribute)] 
public SomeResult AddMethod(long[] Ids) 
{ 
    //some code 
} 

उत्तर

0

प्रलेखन ऐसा लगता है कि आप InvokeActionMethod विधि है जो आप तीसरा तर्क के रूप में एक IDictionary में पैरामीटर पास करने की अनुमति देता का उपयोग करना चाहते से

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

मुझे example about unit testing controllers मिला।

+0

आईटी एक संरक्षित विधि है। – user99322

+0

अच्छा बिंदु, मुझे कुछ शोध के बाद अद्यतन करने दें ... – cfeduke

+0

यहां उदाहरण का लिंक एक मृत लिंक है –

1

आपको अपने यूनिट परीक्षणों के भीतर से नियंत्रकएक्शन इनवॉकर का उपयोग नहीं करना चाहिए। आप वास्तव में क्या करने की कोशिश कर रहे हैं?

यदि आप अपने कार्यों के व्यवहार की जांच करने की कोशिश कर रहे हैं, तो बस उन्हें सीधे कॉल करें (वे केवल नियमित तरीके हैं)। यदि आप अपने फ़िल्टर के व्यवहार का परीक्षण करने की कोशिश कर रहे हैं, तो फ़िल्टर के लिए एक नकली संदर्भ बनाएं और इसकी ONXxx() विधि को कॉल करें।

+0

नियंत्रकएक्शन इनवॉकर का उपयोग क्यों नहीं करें? गुणों और कार्रवाई के बीच बातचीत का परीक्षण करने के लिए यह आवश्यक है, अगर मैं सही ढंग से – kenwarner

+0

@qntmfred समझता हूं - क्योंकि आप उस बिंदु पर एमवीसी आधारभूत संरचना का परीक्षण कर रहे हैं, जो माइक्रोसॉफ्ट के स्वामित्व वाले कोड है। आम तौर पर जब इकाई परीक्षण एमवीसी अनुप्रयोगों, आप केवल आपके द्वारा लिखे गए कोड का परीक्षण करते हैं, और आप बुनियादी ढांचे के किसी भी अन्य हिस्सों से अलगाव में ऐसा करते हैं। यह आपको उस कोड बेस में आसानी से समस्याओं को ट्रैक करने की अनुमति देता है। बुनियादी ढांचे का परीक्षण - उदा। आपके कोड और तृतीय-पक्ष कोड के बीच बातचीत - आमतौर पर एकीकरण परीक्षण होता है। बेशक आप आवेदक का परीक्षण कर सकते हैं यदि आप चाहें, लेकिन यूनिट परीक्षण एमवीसी के विभिन्न संस्करणों के बीच टूट सकता है, और आप पागल हो सकते हैं। :) – Levi

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