我目前正在尝试掌握 MSpec,主要是为了学习 (T/B)DD 的新方法,以便能够就使用哪种技术做出有根据的决定。以前,我主要(只读)使用内置 MSTest 框架和 Moq,所以 BDD 对我来说是相当新的。
我正在编写一个 ASP.NET MVC 应用程序,并且我想实现PRG。上次我这样做时,我使用操作过滤器通过 导出和导入ModelState
,TempData
这样我就可以返回 aRedirectResult
并且当用户获得视图时验证错误仍然存在。我通过验证两件事来测试该场景:
a)我编写的 ExportModelStateAttribute 已应用(在我的控制器的测试中)
b)该属性有效(在动作过滤器属性的测试中)
但是,在 BDD 中,我明白我应该更加关注行为,而更少关注实现。这意味着我可能应该在操作完成执行时验证模型状态是否在 tempdata 中 - 不一定是通过属性完成的。
更复杂的是,在测试中直接调用动作时属性不会运行,所以我不能只调用动作并查看工作是否完成。
我应该如何在 MSpec 中规范/测试这个?