【问题标题】:Unit Test with route data not working on ASP.NET MVC 5 Web API带有路由数据的单元测试不适用于 ASP.NET MVC 5 Web API
【发布时间】:2013-11-08 16:03:39
【问题描述】:

我已使用 MVC 5 将我的 web api 项目升级到最新版本 应用程序运行正常,但是这行代码在我的单元测试中不再工作:

string uri = this.Url.Link("DefaultApi", new { id = savedOrganization.Id });

控制器的 Url 属性现在为空。 这就是我配置模拟控制器的方式:

var config = new HttpConfiguration();
var request = new HttpRequestMessage(HttpMethod.Post, "http://xxx/api/organization");
var route = config.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}");
var routeData = new HttpRouteData(route, new HttpRouteValueDictionary {{"controller", "organization"}});

controller.ControllerContext = new HttpControllerContext(config, routeData, request);
controller.Request = request;
controller.Request.Properties[HttpPropertyKeys.HttpConfigurationKey] = config;
controller.Request.Properties[HttpPropertyKeys.HttpRouteDataKey] = routeData;

在升级到 MVC 5 之前,它运行良好。

当我调试测试时,它显示 Url 属性现在为空

【问题讨论】:

    标签: asp.net-mvc asp.net-web-api asp.net-mvc-5


    【解决方案1】:

    看起来在 MVC 5 中 Url 属性是以不同的方式创建的。 我在测试中引入了这一行,现在 Url 属性恢复正常

    private static void SetupControllerForTests(ApiController controller)
    {
        var config = new HttpConfiguration();
        var request = new HttpRequestMessage(HttpMethod.Post, "http://api.clientele-itsm.com/api/organization");
        var route = config.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}");
        var routeData = new HttpRouteData(route, new HttpRouteValueDictionary
        {
            {"id", Guid.Empty},
            {"controller", "organization"}
        });
        controller.ControllerContext = new HttpControllerContext(config, routeData, request);
        UrlHelper urlHelper = new UrlHelper(request);
        controller.Request = request;
        controller.Request.Properties[HttpPropertyKeys.HttpConfigurationKey] = config;
        controller.Request.Properties[HttpPropertyKeys.HttpRouteDataKey] = routeData;
        /// inject a fake helper
        controller.Url = urlHelper;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-07
      • 1970-01-01
      • 1970-01-01
      • 2012-03-18
      • 1970-01-01
      相关资源
      最近更新 更多