2010-10-29 5 views
12

Podczas próby przetestowania kontrolerów MVC 2, trudno jest przetestować wynik TempData podczas wykonywania przekierowania. Działa dobrze, jeśli wynikiem działania kontrolera jest ViewResult, jednak w przekierowaniu jest to RedirectToRouteResult.Jak wykonać test ustawienia TempData w MVC 2, gdzie występuje przekierowanie?

Więc mój test jest coś takiego:

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

Jedną z opcji jest, aby wykonać następujące czynności:

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

Jeśli wynik był ViewResult mogło zostały przetestowane tak:

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

Czy istnieje sposób na przetestowanie RedirectToRouteResult w taki sam sposób, jak ViewResult może być testowany?

Dzięki

Odpowiedz

33

Assert.That(controller.TempData.ContainsKey("info")); jest dokładnie to, czego potrzebujesz.

+0

Miałem nadzieję na sposób, aby zobaczyć wynikowy efekt (np. "ViewResult") zamiast właściwości set. Jeśli nie ma sposobu, to chyba nie ma sposobu. – Nathan

+6

controller.TempData ["informacje"]. –

Powiązane problemy