Unit-Test für controller an ASP.NET MVC 2 mit RedirectToAction

Ich habe einen controller, implementiert ein einfaches Add-operation auf ein Element und leitet auf die Seite mit den Details:

[HttpPost]
public ActionResult Add(Thing thing)
{ 
    //... do validation, db stuff ...
    return this.RedirectToAction<c => c.Details(thing.Id));
}

Diese funktioniert Super (mit der RedirectToAction von MvcContrib Montage).

Wenn ich unit-Tests diese Methode, die ich für den Zugriff auf das ViewData, der zurückgegeben wird, von den Details der Aktion (also ich kann mit der neu eingefügte Sache, die primary key-und zu beweisen, es ist jetzt in der Datenbank).

Den test:

var result = controller.Add(thing);

Aber das Ergebnis hier ist der Typ: System.Web.Mvc.RedirectToRouteResult (das ist ein System.Web.Mvc.ActionResult). Es nicht noch nicht ausgeführt, die Details der Methode.

Habe ich versucht, Sie anzurufen ExecuteResult auf das zurückgegebene Objekt übergeben verspottet bis ControllerContext aber der Rahmen war nicht glücklich mit dem Mangel an detail in der verspottet Objekt.

Könnte ich versuchen, die Füllung in den details, etc, etc, aber dann ist mein test-code ist viel länger als der code, den ich Teste und ich habe das Gefühl ich brauche unit-tests für die unit-tests!

Bin ich etwas fehlt in der testing-Philosophie? Wie kann ich testen diese Aktion, wenn ich nicht bekommen kann auf die zurückgegebenen Zustand?

InformationsquelleAutor Rob Walker | 2010-03-13
Schreibe einen Kommentar