दिलचस्प पोस्ट
एक पायथन सूची से मूल्यों के साथ एक। Csv फ़ाइल बनाएँ जावा जेनेरिक्स – पुल विधि? वर्तमान स्क्रिप्ट फ़ाइल नाम प्राप्त करें एक सत्र को पूरी तरह से नष्ट करने का सर्वोत्तम तरीका – भले ही ब्राउज़र बंद न हो स्पार्क में डिफ़ॉल्ट विभाजन योजना 2011-2012 में जावा जेडीबीसी कनेक्शन पूल पुस्तकालय पसंद? स्विफ्ट का उपयोग करते हुए एक JSON फ़ाइल में पढ़ना मैं JFrame में शीर्षक पट्टी का रंग कैसे बदल सकता / सकती हूं? CGContextDrawImage UIImage.CGImage पास करते समय छवि को ऊपर की ओर खींचती है आउटपुट कंसोल। WPF विंडोज़ अनुप्रयोगों से वास्तविक कंसोल के लिए लिखें बनाम जबकि करो जबकि फ़ोकस फ़ॉर्म तत्वों को बदलते समय स्क्रॉल करना अक्षम करें ipad web app JQuery के साथ वापस नेविगेट करने से बैकस्पेस को रोकें (Google के मुखपृष्ठ की तरह) कैसे "java.io.IO.exeception: त्रुटि = 12 को हल करने के लिए, मेमोरी आवंटित नहीं कर सकता है" कॉलम रनटाइम # exec ()? डिफ़ॉल्ट URL स्कीम के साथ कैसे संभालना है

ASP.NET MVC: यूनिट परीक्षण नियंत्रक जो UrlHelper का उपयोग करते हैं

मेरे नियंत्रक कार्यों में से एक, जो कि अजाक्स अनुरोध में बुलाया जा रहा है, क्लाइंट की तरफ एक यूआरएल लौटा रहा है, ताकि वह रीडायरेक्शन कर सके। मैं Url.RouteUrl(..) का उपयोग कर रहा हूं Url.RouteUrl(..) और मेरी यूनिट परीक्षणों के दौरान ये विफल रहता है क्योंकि Controller.Url Url.RouteUrl(..) पैरामीटर पूर्व-भरी नहीं है।

मैंने RouteCollection.GetUrlWithApplicationPath (जो विफल हुआ) के प्रयास में बहुत सी चीजों की कोशिश की, मैन्युअल रूप से एक RouteCollection.GetUrlWithApplicationPath हुए एक RouteCollection.GetUrlWithApplicationPath (जो RouteCollection.GetUrlWithApplicationPath पर विफल हुआ। RouteCollection.GetUrlWithApplicationPath कॉल) है।

मैंने Google की खोज की है लेकिन इस विषय पर लगभग कुछ नहीं पाया। क्या मैं कुछ नियंत्रण कर रहा हूँ अविश्वसनीय रूप से बेवकूफ़ Url.RouteUrl का उपयोग कर रहा हूँ। Url.RouteUrl मेरी नियंत्रक की कार्रवाई में है? क्या कोई आसान तरीका है?

इससे भी बदतर बनाने के लिए, मैं अपने यूनिट परीक्षण में लौटा यूआरएल का परीक्षण करने में सक्षम होना चाहता हूं – वास्तव में मुझे यह जानने में दिलचस्पी है कि यह सही मार्ग पर पुनः निर्देशित है, लेकिन जब से मैं एक यूआरएल के बजाय एक यूआरएल लौट रहा हूं मार्ग, मैं हल किया गया यूआरएल को नियंत्रित करना चाहता हूं (उदाहरण के लिए RouteCollection का प्रयोग करके) – लेकिन मुझे अपने परीक्षण से शुरू करने के लिए गुजरने में खुशी होगी।

वेब के समाधान से एकत्रित समाधान "ASP.NET MVC: यूनिट परीक्षण नियंत्रक जो UrlHelper का उपयोग करते हैं"

यहाँ मेरे परीक्षणों में से एक है (xUnit + Moq) सिर्फ इसी तरह के मामले के लिए (यूआरएल का उपयोग कर। रूटयूयूएल नियंत्रक में)

उम्मीद है की यह मदद करेगा:

 var routes = new RouteCollection(); MvcApplication.RegisterRoutes(routes); var request = new Mock<HttpRequestBase>(MockBehavior.Strict); request.SetupGet(x => x.ApplicationPath).Returns("/"); request.SetupGet(x => x.Url).Returns(new Uri("http://localhost/a", UriKind.Absolute)); request.SetupGet(x => x.ServerVariables).Returns(new System.Collections.Specialized.NameValueCollection()); var response = new Mock<HttpResponseBase>(MockBehavior.Strict); response.Setup(x => x.ApplyAppPathModifier("/post1")).Returns("http://localhost/post1"); var context = new Mock<HttpContextBase>(MockBehavior.Strict); context.SetupGet(x => x.Request).Returns(request.Object); context.SetupGet(x => x.Response).Returns(response.Object); var controller = new LinkbackController(dbF.Object); controller.ControllerContext = new ControllerContext(context.Object, new RouteData(), controller); controller.Url = new UrlHelper(new RequestContext(context.Object, new RouteData()), routes); 

ईयू-जी-ने से एक संशोधित कार्यान्वयन यह एक आवेदन में परिभाषित मार्गों के आधार पर एक उत्पन्न लिंक देता है। यू-जी-ने का उदाहरण हमेशा एक निश्चित प्रतिक्रिया वापस आ गया। नीचे दिए गए दृष्टिकोण से आप यह जांच सकते हैं कि यूआरएल-हेल्पर में सही कार्रवाई / नियंत्रक और मार्ग सूचना को पारित किया जा रहा है – अगर आप UrlHelper को कॉल का परीक्षण कर रहे हैं तो आप क्या चाहते हैं।

 var context = new Mock<HttpContextBase>(); var request = new Mock<HttpRequestBase>(); var response = new Mock<HttpResponseBase>(); var session = new Mock<HttpSessionStateBase>(); var server = new Mock<HttpServerUtilityBase>(); context.Setup(ctx => ctx.Request).Returns(request.Object); context.Setup(ctx => ctx.Response).Returns(response.Object); context.Setup(ctx => ctx.Session).Returns(session.Object); context.Setup(ctx => ctx.Server).Returns(server.Object); request.SetupGet(x => x.ApplicationPath).Returns("/"); request.SetupGet(x => x.Url).Returns(new Uri("http://localhost/a", UriKind.Absolute)); request.SetupGet(x => x.ServerVariables).Returns(new NameValueCollection()); response.Setup(x => x.ApplyAppPathModifier(It.IsAny<string>())).Returns<string>(x => x); context.SetupGet(x => x.Request).Returns(request.Object); context.SetupGet(x => x.Response).Returns(response.Object); var routes = new RouteCollection(); MvcApplication.RegisterRoutes(routes); var helper = new UrlHelper(new RequestContext(context.Object, new RouteData()), routes); 

यह पोस्ट उपयोगी हो सकती है यदि आप HttpContextBase कक्षा को नकली करना चाहते हैं।

http://www.hanselman.com/blog/ASPNETMVCSessionAtMix08TDDAndMvcMockHelpers.aspx

@ ईयू-जी-ने ने जवाब का निर्माण किया जिससे मुझे एक महान सौदा मिला:

मेरे पास एक एक्शनआरसल्ट था जिसने एक रीडायरेक्ट के साथ ही एक FormCollection पैरामीटर के साथ अपडेटमोडेल कॉल किया था। काम करने के लिए UpdateModel () के लिए मुझे इसे मेरे Mocked HttpRequestBase में जोड़ना था:

 FormCollection collection = new FormCollection(); collection["KeyName"] = "KeyValue"; request.Setup(x => x.Form).Returns(collection); request.Setup(x => x.QueryString).Returns(new NameValueCollection()); 

यह जांचने के लिए कि पुनर्निर्देशित यूआरएल सही था, आप निम्न कर सकते हैं:

 RedirectResult result = controller.ActionName(modelToSubmit, collection) as RedirectResult; Assert.AreEqual("/Expected/URL", result.Url); 

http://kbochevski.blogspot.com/2010/06/unit-testing-mvcnet.html चर्चा करता है कि यूनिट परीक्षणों के साथ सभी परतों को कैसे कवर किया जाता है। यह नियंत्रकों परीक्षण के लिए राइनो और एमवीसी। कंटेंट का उपयोग करता है। गूगल पर स्रोत कोड एक महान मदद की हो सकती है