2010-10-29 5 views
12

Al intentar probar mis controladores MVC 2, estoy teniendo dificultades para probar el resultado de TempData cuando estoy haciendo una redirección. Funciona bien si el resultado de la acción del controlador es ViewResult; sin embargo, en una redirección, es RedirectToRouteResult.¿Cómo se prueba para que TempData se configure en MVC 2 donde hay una redirección?

Así que mi prueba es algo como esto:

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". 

Una opción es para hacer lo siguiente:

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

Si el resultado había sido un ViewResult que podría haber sido probado de esta manera:

var viewResult = (ViewResult)actionResult; 
Assert.That(viewResult.TempData.ContainsKey("info")); 

Hay una manera de probar RedirectToRouteResult de la misma manera que ViewResult puede ser probado?

Gracias

Respuesta

33

Assert.That(controller.TempData.ContainsKey("info")); es exactamente lo que necesita.

+0

Estaba esperando una forma de ver el efecto resultante (como 'ViewResult') en lugar de la propiedad set. Si no hay una manera, entonces supongo que no hay forma. – Nathan

+6

controller.TempData ["info"]. –

Cuestiones relacionadas