gpt4 book ai didi

asp.net-mvc - 使用 MSpec 测试 ActionFilterAttributes

转载 作者:行者123 更新时间:2023-12-03 17:20:46 25 4
gpt4 key购买 nike

我目前正在尝试掌握 MSpec,主要是为了学习 (T/B)DD 的新方法,以便能够对使用哪种技术做出有根据的决定。以前,我主要(只读)使用带有 Moq 的内置 MSTest 框架,因此 BDD 对我来说很新。

我正在编写一个 ASP.NET MVC 应用程序,我想实现 PRG .上次我这样做时,我使用了 Action 过滤器来导出和导入 ModelState通过 TempData ,这样我就可以返回 RedirectResult当用户获得 View 时,验证错误仍然存​​在。我通过验证两件事来测试该场景:

a) 应用了我编写的 ExportModelStateAttribute(在我的 Controller 测试中)
b) 该属性有效(在 Action 过滤器属性的测试中)

但是,在 BDD 中,我明白我应该更加关注行为,而更少关注实现。这意味着我可能应该在操作完成执行时验证模型状态是否在临时数据中 - 不一定是通过属性完成的。

更复杂的是,在测试中直接调用操作时不会运行属性,因此我不能只调用操作并查看工作是否已完成。

我应该如何在 MSpec 中规范/测试这个?

最佳答案

过滤器是横切关注点,因此您应该独立于应用过滤器的位置测试过滤器的行为(否则您会重复大量测试)。

您仍然可以在 Controller 测试中表达所需的行为(模型状态存储在临时数据中),但测试可以断言属性的存在(也许可以封装在行为中?)。

顺便说一句:
ASP.NET MVC 的设计约定是在模型状态包含错误时返回 View 。在这些场景中使用 PRG 确实有意义,因为 PRG 旨在停止重复的表单提交和处理(即有效请求)。当用户发布无效表单时,您会在开始处理请求之前检查错误,从而停止处理用户请求。

关于asp.net-mvc - 使用 MSpec 测试 ActionFilterAttributes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2871941/

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