asp.net-mvc – 我如何UnitTest自定义ActionFilter?
发布时间:2020-12-15 19:54:40 所属栏目:asp.Net 来源:网络整理
导读:我一直试图找到一些关于此的直截了当的信息,但是我无法 – 或者我发现的一直是模糊的让我理解正在发生的事情,或者对于错误的事情来说太具体了,例如我找到了一个单元测试AuthorizeAttribute的教程. (第三种选择当然是我太笨了,没有意识到我正在阅读我正在寻找
我一直试图找到一些关于此的直截了当的信息,但是我无法 – 或者我发现的一直是模糊的让我理解正在发生的事情,或者对于错误的事情来说太具体了,例如我找到了一个单元测试AuthorizeAttribute的教程. (第三种选择当然是我太笨了,没有意识到我正在阅读我正在寻找的信息……在这种情况下我仍然需要帮助,因为我很笨:P)
我希望能够测试两件事: >将给定的ActionFilter应用于某个操作(以确保该操作符合要求) 而且我很无能为力.谁能让我朝着正确的方向推动我真正需要测试的东西?我的安排,行动和断言部分应包含哪些内容? 一点点细节,如果我不够清楚: 我有一个CustomValidationFilter,它应该检查两个提交的表单值是否相同,如果没有则添加ModelStateError.我想验证错误是否添加了正确的错误消息,如果值不相同,并且如果值相等(并且为非null)则不添加错误. 我还在GuestbookController上有一个Write动作.我想验证过滤器是否已应用于此操作. 解决方法
在测试中使用反射.
var method = typeof(MyController).GetMethod("MyMethod"); var attribute = method.GetCustomAttributes(typeof(CustomValidationFilter),false); .Cast<CustomValidationFilter>() .SingleOrDefault(); Assert.IsNotNull( attribute ); Assert.AreEqual( "value",atttribute.SomeProperty ); 为您班级中的方法创建单元测试.使用适当的数据模拟filterContext并检查该方法应该设置的任何变量,实际上是您期望的那样. public void AttributeTest() { var httpContext = MockRepository.GenerateMock<HttpContextBase>(); var controller = new FakeController(); controller.controllerContext = new ControllerContext( httpContext,new RouteData(),controller ); ... attribute.OnActionExecuting( filterContext ); Assert... } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – ASP.MVC 2.0当整数值为零时,如何显示整数的
- asp.net – 如何在iTextSharp中显示水平线
- entity-framework – 数据读取器与指定的模型不兼容
- asp.net – 无法识别的配置部分log4net. web.config网站
- asp.net-mvc – 是否可以使用自定义错误页面与MVC网站,但不
- 您希望在初学者的ASP.NET安全手册中看到什么?
- entity-framework – 将DbContext注入FluentValidation验证
- asp.net-mvc – ASP.NET MVC:让API控制器操作同时返回View
- asp.net – Umbraco 7:无法加载类型Umbraco.Web.UmbracoAp
- asp.net – 你能以编程方式设置MachineKey吗?
推荐文章
站长推荐
热点阅读