2011-09-29 22 views
8

मैं निम्नलिखित शर्तRedirectToAction का परीक्षण करने का सबसे अच्छा तरीका क्या है?

if (_ldapAuthentication.IsAuthenticated (Domain, login.username, login.PassWord)) 
{ 
    _ldapAuthentication.LogOn (indexViewModel.UserName, false); 
    _authenticationService.LimpaTentativas (login.username); 
    return RedirectToAction ("Index", "Main"); 
} 

सच जा रहा है, यह अन्य पृष्ठ पर रीडायरेक्ट है .. क्या एक परीक्षण करने के लिए सबसे अच्छा होगा?

उत्तर

14

एक यूनिट परीक्षण में, आप केवल अपने नियंत्रक द्वारा वापस किए गए ActionResult पर जोर देंगे।

//Arrange 
var controller = new ControllerUnderTest(
         mockLdap, 
         mockAuthentication 
        ); 

// Mock/stub your ldap behaviour here, setting up 
// the correct return value for 'IsAuthenticated'. 

//Act 
RedirectResult redirectResult = 
    (RedirectResult) controller.ActionYouAreTesting(); 

//Assert 
Assert.That(redirectResult.Url, Is.EqualTo("/Main/Index")); 
9

अपने इकाई परीक्षण में संभव InvalidCastExceptions बचने के लिए, यह है कि क्या मैं हमेशा करना है:

//Arrange 
var controller = new ControllerUnderTest(
         mockLdap, 
         mockAuthentication 
        ); 

// Mock your ldap behaviour here, setting up 
// the correct return value for 'IsAuthenticated'. 

//Act 
var result = controller.ActionYouAreTesting() as RedirectToRouteResult; 

// Assert 
Assert.NotNull(result, "Not a redirect result"); 
Assert.IsFalse(result.Permanent); // Or IsTrue if you use RedirectToActionPermanent 
Assert.AreEqual("Index", result.RouteValues["Action"]); 
Assert.AreEqual("Main", result.RouteValues["Controller"]); 
संबंधित मुद्दे