我正在尝试在我的 web api 应用程序中开发一个 PATCH 端点。在更新模型中,我有所需数据的属性和一些自定义属性。由于我发现在 PATCH 端点中没有按预期执行属性验证,因此我需要使用如下方法触发验证
private void Validate(object model, Type type)
{
var validator = Configuration.Services.GetBodyModelValidator();
var metadataProvider = Configuration.Services.GetModelMetadataProvider();
HttpActionContext actionContext = new HttpActionContext(
ControllerContext, Request.GetActionDescriptor());
if (!validator.Validate(model, type, metadataProvider, actionContext, String.Empty))
{
throw new HttpResponseException(Request.CreateErrorResponse(
HttpStatusCode.BadRequest, actionContext.ModelState));
}
}
这个逻辑对我来说很好。问题是,当我尝试为 PATCH 端点编写单元测试时,测试失败,因为Request.GetActionDescriptor()
返回 null。也许我需要以不同的方式设置我的控制器。有任何想法吗?也许我需要以某种方式设置 Request 对象