加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 07:43:35 所属栏目:asp.Net 来源:网络整理
导读:我目前正在努力掌握MSpec,主要是为了学习(T / B)DD的新方法,以便能够对使用哪种技术做出明智的决定.以前,我主要(只读)只使用内置的MSTest框架和Moq,所以BDD对我来说是个新手. 我正在编写一个ASP.NET MVC应用程序,我想实现PRG.上次我这样做时,我使用动作过滤
我目前正在努力掌握MSpec,主要是为了学习(T / B)DD的新方法,以便能够对使用哪种技术做出明智的决定.以前,我主要(只读)只使用内置的MSTest框架和Moq,所以BDD对我来说是个新手.

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

a)我编写的ExportModelStateAttribute已应用(在我的控制器的测试中)
b)该属性有效(在动作过滤器属性的测试中)

然而,在BDD中,我知道我应该更关注行为,甚至更少关注实现.这意味着我可能只需要在动作执行完毕后验证模型状态是否在tempdata中 – 不一定是通过属性完成的.

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

我应该如何在MSpec中对此进行规范/测试?

解决方法

过滤器是横切的问题,因此您应该独立于应用的位置测试过滤器的行为(否则您将复制大量测试).

您仍然可以在控制器测试中表达所需的行为(模型状态存储在临时数据中),但测试可以断言属性的存在(可以封装在一个行为中吗?).

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读