var routes = new RouteCollection();
MvcApplication.RegisterRoutes(routes);
var mockedRequest = new Mock<HttpRequestBase>();
mockedRequest.Setup(m => m.AppRelativeCurrentExecutionFilePath).Returns("~/");
var mockedHttpContext = new Mock<HttpContextBase>();
mockedHttpContext.Setup(m => m.Request).Returns(mockedRequest.Object);
var controllerContext = new Mock<ControllerContext>();
controllerContext.Setup(c => c.RouteData).Returns(routes.GetRouteData(mockedHttpContext.Object));
controllerContext.Setup(c => c.HttpContext).Returns(mockedHttpContext.Object);
controllerContext.Setup(c => c.Controller).Returns(new Mock<ControllerBase>().Object);
У меня есть что-то похожее на это - я склоняюсь к тому, чтобы обернуть все эти типы Mocks в помощник и при необходимости изменить настройки из теста, такие как изменение AppRelativeCurrentExecutionFilePath или данных маршрута.