嘲笑HttpActionContext.测试Web时的ActionArguments.Api ActionFilter
本文关键字:ActionArguments Api ActionFilter 时的 Web HttpActionContext 测试 嘲笑 | 更新日期: 2023-09-27 18:19:15
我正在编写一个onactionexecution动作过滤器,我想对其功能进行单元测试。
过滤器需要做的一件事是对传入过滤器的操作参数执行一些验证。
我正在从actionContext.ActionArguments
字典中获得参数,该字典对实现很好,但我很难对其进行单元测试。
在我的测试中,我不能设置actionContext.ActionArguments
,因为它没有setter,也不能模拟它,因为它不是虚拟的。
这让我有点困惑,我是否可以得到任何值从单元测试在这种情况下?
根据AspNetWebStack的源代码,ActionArguments只是一个简单的Dictionary。因此,向其中插入键值对非常简单。我只需要输入
actionContext。ActionArguments[key] = value;
在单元测试的安排部分。
希望有帮助
请看我的博客:https://dondeetan.com/2016/09/19/validating-and-unit-testing-web-api-2-route-attribute-parameters/
var mockactioncontext = new HttpActionContext
{
ControllerContext = new HttpControllerContext
{
Request = new HttpRequestMessage()
},
ActionArguments = { { "employeeid", "null" } }
};
mockactioncontext.ControllerContext.Configuration = new HttpConfiguration();
mockactioncontext.ControllerContext.Configuration.Formatters.Add(new JsonMediaTypeFormatter());
var filter = new <youractionattributefilterclass>();
filter.OnActionExecuting(mockactioncontext);
Assert.IsTrue(mockactioncontext.Response.StatusCode == HttpStatusCode.BadRequest);