2010-10-29 3 views
12

Wenn ich versuche, meine MVC 2-Controller zu testen, habe ich eine harte Zeit, das Ergebnis von TempData zu testen, wenn ich eine Umleitung mache. Es funktioniert, wenn das Ergebnis der Controller-Aktion ein ist, jedoch in einer Weiterleitung RedirectToRouteResult ist.Wie kann ich testen, ob TempData in MVC 2 gesetzt ist, wo es eine Weiterleitung gibt?

So ist mein Test etwas wie folgt aus:

var controller = new SubscriptionController(this.dataStorageMock.Object) 
    { 
     ControllerContext = MvcMockHelpers.GetControllerContextMock("POST") 
    }; 

var actionResult = controller.Create(formCollection); 
var redirectResult = (RedirectToRouteResult)actionResult; 

// TODO: Need to ensure TempData contains a key "info". 

Eine Möglichkeit ist, die folgendes zu tun:

Assert.That(controller.TempData.ContainsKey("info")); 

Wenn das Ergebnis ein ViewResult war es so getestet worden sein könnte:

Gibt es eine Möglichkeit, RedirectToRouteResult auf die gleiche Weise wie diezu testenkann getestet werden?

Dank

Antwort

33

Assert.That(controller.TempData.ContainsKey("info")); ist genau das, was Sie brauchen.

+0

Ich hoffte auf eine Möglichkeit, den resultierenden Effekt (wie 'ViewResult') anstelle der Eigenschaft set zu sehen. Wenn es keinen Weg gibt, dann denke ich, dass es keinen Weg gibt. – Nathan

+6

controller.TempData ["info"]. –

Verwandte Themen