15

Ich habe den folgenden Code in meinem Controller:Unit-Test RedirectToRouteResult

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

Ich möchte Test Einheit diese Umleitung (RedirectToRouteResult). Ich habe es so gemacht:

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()); 

Also brauche ich vier behauptet meine RedirectToRouteResult zu testen. Gibt es einen effizienteren Weg?

+0

Dies ist ausreichend – Amit

+0

id auch assert.instanceoftype, da Sie es Action – Slicksim

+1

Rückkehr haben Ja, ich es tun auf diese Weise: RedirectToRouteResult result = (RedirectToRouteResult) controller.Captcha (loginUseraccount); Wenn es sich nicht um ein RedirectToRouteResult handelt, wird eine Ausnahme ausgelöst und der Test schlägt fehl. – mosquito87

Antwort

7

Es gibt eine mehr efficent Weg, da Sie nicht brauchen, um zu testen, diese beiden Linien

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

Das sind Behauptungen für Code, den Sie geschrieben haben. Sie müssen darauf vertrauen, dass diejenigen, die diesen Code schreiben, eigene Komponententests haben. Wenn die ersten beiden Zeilen trotz aller Widrigkeiten fehlerhaft wären, würden Ihre beiden letzten Behauptungen scheitern.