Unit testing WebApi单元测试urlhelper现在为空

Unit testing WebApi单元测试urlhelper现在为空,unit-testing,asp.net-web-api,Unit Testing,Asp.net Web Api,我在一个WebApi项目中进行了一些单元测试,测试的是文章的WebApi 1.0版本,现在我在尝试构造响应时,已经升级到WebApi 2.0,并添加了新资源的位置ApicController.Url返回null。在升级之前,这些单元测试都通过了。 以下是控制器的设置 var config = new HttpConfiguration(); SetDependencyResolver(config, type); var request = new HttpRequestMessage(met

我在一个WebApi项目中进行了一些单元测试,测试的是文章的WebApi 1.0版本,现在我在尝试构造响应时,已经升级到WebApi 2.0,并添加了新资源的位置ApicController.Url返回null。在升级之前,这些单元测试都通过了。 以下是控制器的设置

var config = new HttpConfiguration();
SetDependencyResolver(config, type);

var request = new HttpRequestMessage(method, url);
var route = config.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}");
var routeData =
    new HttpRouteData(
        route,
        new HttpRouteValueDictionary { { "controller", controllerName } });

request.Properties[HttpPropertyKeys.HttpConfigurationKey] = config;
request.Properties[HttpPropertyKeys.HttpRouteDataKey] = routeData;

controller.Configuration = config;
controller.ControllerContext = new HttpControllerContext(config, routeData, request);
controller.Request = request;
这是失败的电话。注意,返回null的是Url对象

response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = claimsCommand.Id }));

那么,既然我已经升级到了最新版本,我做错了什么呢?

我在网站的其他地方找到了答案

在WebApi 1.0中,在上面第一个代码示例的最后一行代码中

Controller.Request = request;
控制器创建一个
UrlHelper
,并填充属性
controller.Url
。这在WebAPI2.0中不再发生。另一个线程的建议是在单元测试中自己创建它。因此,我添加了这一行(如另一个线程中所建议的)

controller.Url = new UrlHelper(request);