2010-10-29 6 views
12

Quando provo a testare i miei controller MVC 2, sto riscontrando dei problemi nel provare il risultato di TempData quando eseguo un reindirizzamento. Funziona bene se il risultato dell'azione del controller è un ViewResult, tuttavia, in un reindirizzamento, è RedirectToRouteResult.Come si esegue il test per l'impostazione di TempData in MVC 2 in cui è presente un reindirizzamento?

Quindi la mia prova è qualcosa di simile:

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 possibilità è quella di effettuare le seguenti operazioni:

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

Se il risultato fosse stato un ViewResult avrebbe potuto essere testato in questo modo:

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

C'è un modo per testare RedirectToRouteResult allo stesso modo del ViewResult può essere testato?

Grazie

risposta

33

Assert.That(controller.TempData.ContainsKey("info")); è esattamente quello che ti serve.

+0

Speravo in un modo per vedere l'effetto risultante (come 'ViewResult') invece della proprietà set. Se non c'è un modo, suppongo che non ci sia un modo. – Nathan

+6

controller.TempData ["informazioni"]. –

Problemi correlati