Asp.net mvc 如何使用ASP.NET MVC错误视图进行规范测试
我正在使用SpecFlow对MVC3项目进行BDD。我当前的规范场景说明:Asp.net mvc 如何使用ASP.NET MVC错误视图进行规范测试,asp.net-mvc,bdd,Asp.net Mvc,Bdd,我正在使用SpecFlow对MVC3项目进行BDD。我当前的规范场景说明: Given a user is working on the system When an error is raised Then the user should be redirected to error page And display a link to go back where he came from 我如何测试这样的规范?我通常直接测试控制器,但是标准MVC3模板给出的错误视图没有控制器,也没有使用控
Given a user is working on the system
When an error is raised
Then the user should be redirected to error page
And display a link to go back where he came from
我如何测试这样的规范?我通常直接测试控制器,但是标准MVC3模板给出的错误视图没有控制器,也没有使用控制器,因为它被HandleError全局过滤器重定向
在特殊情况下,我使用它来测试行为是否符合规范所说的,但是要做到这一点,我需要一个引发错误的视图,而当一切正常时,我没有这个视图
关于测试这样的场景有什么想法吗?我对这个场景有一些想法: 1.“给定用户正在操作系统”是一个相当模糊的步骤。在步骤定义中可以找到什么代码?除非您有一个具有WorkingOnSystem方法的用户类,否则这行代码可能值得删除 2.)在没有看到其余代码的情况下,我认为此功能的目标应该是HandleError过滤器本身。根据它的定义,您知道调用它时发生了错误。您所需要做的就是实例化过滤器,调用适当的方法,并测试结果 这样想:在您的系统中,“出现错误时”是什么意思?如果您的HandleError筛选器不在该位置,则您可能没有该位置。在这种情况下,您需要更加具体
我认为这个规范的尴尬之处在于ASP.NETMVC。当您处理抽象框架时,有时会让您围绕其中的某个部分“包装”您的规范。当应用程序的各个部分来自如此多的地方时,我们无法轻松地实现端到端的连接 我完全同意,规格真的很模糊。按照yogur关于针对过滤器进行测试的绝妙建议,spec stept是否应该这样开始“假设发生了错误”?我认为在这种情况下,如果您针对handle错误过滤器编写测试,您应该将其声明为When子句。这样:当站点上发生错误时,应该重定向用户并记录错误