2008-09-12 11 views
16

मैं एक एमवीसी पुनर्निर्देशन का परीक्षण कैसे करूं?यूनिट परीक्षण एएसपी.नेट एमवीसी पुनर्निर्देशन

public ActionResult Create(Product product) 
{ 
    _productTask.Save(product); 
    return RedirectToAction("Success"); 
} 

public ActionResult Success() 
{ 
    return View(); 
} 

, Ayende's दृष्टिकोण अभी भी जाने के लिए सबसे अच्छा तरीका है पूर्वावलोकन 5 साथ:

public static void RenderView(this Controller self, string action) 
{ 
    typeof(Controller).GetMethod("RenderView").Invoke(self,new object[] { action}); 
} 

अजीब लगता है विशेष रूप से के रूप में MVC टीम ने कहा है कि वे ढांचे लिख रहे हैं हो सकता है, यह करने के लिए है करने के लिए परीक्षण योग्य।

उत्तर

28
[TestFixture] 
public class RedirectTester 
{ 
    [Test] 
    public void Should_redirect_to_success_action() 
    { 
     var controller = new RedirectController(); 
     var result = controller.Index() as RedirectToRouteResult; 
     Assert.That(result, Is.Not.Null); 
     Assert.That(result.Values["action"], Is.EqualTo("success")); 
    } 
} 

public class RedirectController : Controller 
{ 
    public ActionResult Index() 
    { 
     return RedirectToAction("success"); 
    } 
} 
+9

RedirectToRouteResult.Values ​​[] अब रीडायरेक्ट ToRouteResult.RouteValues ​​[...] – mxmissile

+0

क्या किसी को पता है कि परीक्षण के दौरान पुनर्निर्देशित होने पर आप वास्तव में कार्रवाई कैसे कर सकते हैं? – f0ster

+0

@ f0ster आप ऐसा क्यों चाहते हैं? किसी भी तरह से, उपर्युक्त उदाहरण में 'नियंत्रक। असफल() 'इसे पूरा करेगा। – bzlm

-1

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

-1

आप Mvc.Contrib.TestHelper जो परीक्षण पुनर्निर्देशन के लिए दावे प्रदान करता है का उपयोग कर सकते हैं। http://kbochevski.blogspot.com/2010/06/unit-testing-mvcnet.html और कोड नमूना पर एक नज़र डालें। यह सहायक हो सकता है।

+0

प्रति [एफएक्यू] (http://stackoverflow.com/faq#promotion) '"सावधान रहें, क्योंकि समुदाय आत्म-प्रचार पर फहरा हुआ है और इसे वोट देने और इसे स्पैम के रूप में चिह्नित करने के लिए प्रेरित करता है। अच्छे, प्रासंगिक उत्तर पोस्ट करें , और यदि वे आपके उत्पाद या वेबसाइट के बारे में होते हैं, तो हो सकता है। हालांकि, आपको अपने उत्तरों में अपने संबद्धता का खुलासा करना होगा। साथ ही, यदि आपकी पोस्ट का एक बड़ा प्रतिशत आपके उत्पाद या वेबसाइट का उल्लेख शामिल है, तो आप शायद यहां गलत कारणों से। "' – Will

0

इस का उपयोग कर ASP.NET MVC 5 के लिए काम करता NUnit:

[Test] 
    public void ShouldRedirectToSuccessAction() 
    { 
     var controller = new RedirectController(); 
     var result = controller.Index() as RedirectToRouteResult; 

     Assert.That(result.RouteValues["action"], Is.EqualTo("success")); 
    } 

आप परीक्षण करने के लिए कि आप एक अलग नियंत्रक रीडायरेक्ट कर रहे हैं चाहते हैं (NewController कहते हैं), जोर होगा:

Assert.That(result.RouteValues["controller"], Is.EqualTo("New")); 
संबंधित मुद्दे