首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么自定义的ActionMethodSelectorAttribute在MVC的单元测试期间不能被评估?

为什么自定义的ActionMethodSelectorAttribute在MVC的单元测试期间不能被评估?
EN

Stack Overflow用户
提问于 2010-12-07 03:16:52
回答 2查看 676关注 0票数 2

如果我使用自定义ActionMethodSelectorAttribute修饰控制器操作,则在标准使用期间会计算该属性,并且可以在调试会话期间中断该属性的主体。但是,当在单元测试期间调用控制器操作时,不会对该属性进行评估,也不会在调试期间中断该属性。为什么会这样呢?无论是正常运行还是在测试中,行为都应该是相同的。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-07 03:28:56

负责运行操作过滤器的是ASP.NET MVC框架。在内部,它使用反射来检查控制器和操作方法,如果该方法或控制器用任何ActionFilter属性修饰,它将在请求生命周期中的适当位置运行这些过滤器。

对于单元测试,您需要分别对您的操作过滤器进行单元测试--将模拟的结果(或任何您正在过滤的上下文)直接注入到filter方法中,并验证路由/结果/视图数据是否根据需要进行了修改。

如果你真的致力于100%的测试覆盖率,你也可以实现单元测试,它将使用反射来验证你已经获得了装饰适当控制器方法所需的操作过滤器属性。

不要担心确保动作过滤器被触发的测试--这些测试是ASP.NET MVC源代码的一部分,我最后一次查看时,它们都是绿色的。

票数 4
EN

Stack Overflow用户

发布于 2010-12-07 03:25:27

该属性将由MVC框架的某些部分通过在控制器上反映并调用所需的方法来调用。如果你的测试看起来像这样:

代码语言:javascript
复制
Controller testController = new YourController(dependecies);
ActionResult result = testController.Action();

//assert on result

则不会有任何东西处理该属性,因此不会命中断点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4370060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档