Unit testing my controller method results in an empty ViewName?

后端 未结 4 904
情歌与酒
情歌与酒 2020-12-29 21:18

I\'m doing some simple MS unit tests on my standard, nothing special controller.

When I check the ViewName proprty, from the returned ViewResult

4条回答
  •  我在风中等你
    2020-12-29 21:56

    I personally found the testing facilities provided by MVC2 to be somewhat clumsy. I'm guessing there is something better already extant, but I ended up creating a simple class to test actions. I modeled the interface (the implementation is another story) on a class provided by the excellent open source Java MVC framework Stripes called MockRoundTrip.

    Here is the method used to get the action destination page when testing actions, called getTripDestination(). It returns the correct result irrespective of whether the viewname is explicitly set or not

        //Get the destination page of the request, using Runtime execution pattern of MVC, namely
        //if no ViewName is explicitly set in controller, ViewResult will have an empty ViewName
        //Instead, current action name will be used in its place
        public string getTripDestination()
        {
           RouteData routeData = getRouteData();
           ViewResult viewResult = (result is ViewResult) ? (ViewResult)result : null;
           string tripDestination = (viewResult != null) ? viewResult.ViewName : "";
    
           return (tripDestination != "") ? tripDestination : (String)routeData.Values["action"];
        }
    
        private RouteData getRouteData()
        {
           HttpContextBase context = controller.ControllerContext.RequestContext.HttpContext;
           return RouteTable.Routes.GetRouteData(context);
        }
    

提交回复
热议问题