void Run(Type controller, FromRouteBinderPrecedence.BinderPrecedence expected) { routes.Clear(); routes.MapCodeRoutes(controller); var httpContextMock = new Mock <HttpContextBase>(); httpContextMock.Setup(c => c.Request.AppRelativeCurrentExecutionFilePath).Returns("~/index/foo"); var httpResponseMock = new Mock <HttpResponseBase>(); httpContextMock.Setup(c => c.Response).Returns(httpResponseMock.Object); var routeData = routes.GetRouteData(httpContextMock.Object); var controllerInstance = (Controller)Activator.CreateInstance(controller); controllerInstance.ValidateRequest = false; var requestContext = new RequestContext(httpContextMock.Object, routeData); var controllerContext = new ControllerContext(requestContext, controllerInstance); controllerInstance.ValueProvider = new ValueProviderCollection(new IValueProvider[] { new RouteDataValueProvider(controllerContext) }); ((IController)controllerInstance).Execute(requestContext); httpResponseMock.Verify(c => c.Write(It.Is <string>(s => s == expected.ToString())), Times.AtLeastOnce()); }
void Run(Type controller, FromRouteBinderPrecedence.BinderPrecedence expected) { config.MapCodeRoutes(controller); var request = new HttpRequestMessage(HttpMethod.Get, "http://localhost/foo"); var routeData = routes.GetRouteData(request); var controllerInstance = (ApiController)Activator.CreateInstance(controller); var controllerContext = new HttpControllerContext(config, routeData, request) { ControllerDescriptor = new HttpControllerDescriptor(config, (string)routeData.Values["controller"], controller), Controller = controllerInstance }; string value; controllerInstance.ExecuteAsync(controllerContext, CancellationToken.None) .Result .TryGetContentValue(out value); Assert.AreEqual(expected.ToString(), value); }