gpt4 book ai didi

unit-testing - WebApi 单元测试 urlhelper 现在为空

转载 作者:行者123 更新时间:2023-12-04 04:47:06 24 4
gpt4 key购买 nike

我有一些单元测试来测试 WebApi 项目中的帖子,它是一个 WebApi 1.0 版本,我已经升级到 webapi 2.0,现在在尝试构建响应时,并添加新资源的位置 ApiController.Url 返回 null .在升级之前,这些单元测试都通过了。
这是 Controller 的设置

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 }));

那么,现在我已经升级到最新版本,我做错了什么?

最佳答案

我在 Stackoverflow 上的其他地方找到了答案

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

Controller.Request = request;

Controller 创建一个 UrlHelper并填充属性 controller.Url .在 Web Api 2.0 中不再发生这种情况。另一个线程的建议是在单元测试中自己创建它。所以我添加了这一行(如另一个线程中所建议的)。
controller.Url = new UrlHelper(request); 

关于unit-testing - WebApi 单元测试 urlhelper 现在为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24403521/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com