当前位置:  开发笔记 > 后端 > 正文

如何在ASP.NET MVC中对ActionFilter进行单元测试?

如何解决《如何在ASP.NETMVC中对ActionFilter进行单元测试?》经验,为你挑选了1个好方法。

ActionFilter我的控制器级有一个.OnActionExecuting在Web应用程序中调用控制器的操作时,将调用该方法.

现在我Action在一个UnitTest中调用:

    NiceController niceController = new NiceController();
    ActionResult result = niceController.WhateverAction();

有没有办法让ActionFilter调用?



1> Craig Stuntz..:

为了自动调用ActionFilter,您将需要运行控制器动作调用程序.这是可能的,但这意味着MVC框架将尝试并执行结果.这意味着您必须使用模拟来删除结果的执行.同样,这是可能的,但这意味着您的单元测试变得比实际代码更多.直接测试滤波器可能更正确.毕竟,OnActionExecuting被调用的事实是框架的一个特性,您不需要对框架本身进行单元测试.

但我认为你真正要说的是你要测试WhateverAction,除非ActionFilter已执行,否则该操作无效.

首先,我会问这个设计的问题.它是否正确?有可能.例如,具有Authorize属性的操作可以假设在执行时有一个登录用户是合理的.当然,行动应该对此进行测试,但这种假设是安全的.另一方面,操作可能不需要过滤器来执行特定于操作的初始化.所以你应该问这个问题,但答案很清楚,设计是正确的.

在这种情况下,单元测试的最佳决策可能是在单元测试中手动执行过滤器,并编写单独的单元测试,证明操作使用正确的属性进行修饰.

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有