gpt4 book ai didi

c# - 为什么在 MVC 的单元测试期间不评估自定义 ActionMethodSelectorAttribute?

转载 作者:行者123 更新时间:2023-11-30 21:18:12 25 4
gpt4 key购买 nike

如果我使用自定义 ActionMethodSelectorAttribute 装饰 Controller 操作,则在标准使用期间评估该属性,并且我可以在调试 session 期间中断该属性的主体。但是,在单元测试期间调用 Controller 操作时不会评估/评估该属性,也不会在调试期间中断。为什么是这样?无论是正常运行还是在测试中,行为肯定应该相同吗?

谢谢

最佳答案

负责运行操作筛选器的是 ASP.NET MVC 框架。在内部,它使用反射来检查 Controller 和操作方法,如果方法或 Controller 装饰有任何 ActionFilter 属性,它将在请求生命周期的适当时间点运行这些过滤器。

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

如果您真的致力于 100% 的测试覆盖率,您还可以实现单元测试,该单元测试将使用反射来验证您是否具有装饰适当 Controller 方法所需的操作过滤器属性。

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

关于c# - 为什么在 MVC 的单元测试期间不评估自定义 ActionMethodSelectorAttribute?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4370060/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com