15

Ho il seguente codice nel mio controller:prova Unità RedirectToRouteResult

public class MyController : BaseController 
{ 
    public ActionResult MyMethod() 
    { 
     ... 
     return RedirectToAction("Index", "Dashboard"); 
    } 
} 

mi piacerebbe test di unità questo reindirizzamento (RedirectToRouteResult). ho fatto in questo modo:

Assert.IsTrue(result.RouteValues.ContainsKey("action")); 
Assert.IsTrue(result.RouteValues.ContainsKey("controller")); 
Assert.AreEqual("Index", result.RouteValues["action"].ToString()); 
Assert.AreEqual("Dashboard", result.RouteValues["controller"].ToString()); 

quindi ho bisogno di quattro afferma di testare la mia RedirectToRouteResult. Esiste un modo più efficiente?

+0

Questo è sufficiente – Amit

+0

id anche assert.instanceoftype in quanto lo avete tornare ActionResult – Slicksim

+1

Sì, lo faccio in questo modo: risultato RedirectToRouteResult = (RedirectToRouteResult) controller.Captcha (loginUseraccount); Se non è un RedirectToRouteResult, viene generata un'eccezione e il test fallisce. – mosquito87

risposta

7

C'è un modo più efficiente dal momento che non c'è bisogno di testare queste due linee

Assert.IsTrue(result.RouteValues.ContainsKey("action")); 
Assert.IsTrue(result.RouteValues.ContainsKey("controller")); 

Quelli sono asserzioni di codice che non ho scritto. Devi credere che chi scrive quel codice abbia i propri test unitari. Se contro tutte le probabilità le prime due righe sarebbero difettose, le tue due ultime affermazioni fallirebbero.