Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何使用ASP.NET MVC错误视图进行规范测试_Asp.net Mvc_Bdd - Fatal编程技术网

Asp.net mvc 如何使用ASP.NET MVC错误视图进行规范测试

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模板给出的错误视图没有控制器,也没有使用控

我正在使用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模板给出的错误视图没有控制器,也没有使用控制器,因为它被HandleError全局过滤器重定向

在特殊情况下,我使用它来测试行为是否符合规范所说的,但是要做到这一点,我需要一个引发错误的视图,而当一切正常时,我没有这个视图


关于测试这样的场景有什么想法吗?

我对这个场景有一些想法:

1.“给定用户正在操作系统”是一个相当模糊的步骤。在步骤定义中可以找到什么代码?除非您有一个具有WorkingOnSystem方法的用户类,否则这行代码可能值得删除

2.)在没有看到其余代码的情况下,我认为此功能的目标应该是HandleError过滤器本身。根据它的定义,您知道调用它时发生了错误。您所需要做的就是实例化过滤器,调用适当的方法,并测试结果

这样想:在您的系统中,“出现错误时”是什么意思?如果您的HandleError筛选器不在该位置,则您可能没有该位置。在这种情况下,您需要更加具体



我认为这个规范的尴尬之处在于ASP.NETMVC。当您处理抽象框架时,有时会让您围绕其中的某个部分“包装”您的规范。当应用程序的各个部分来自如此多的地方时,我们无法轻松地实现端到端的连接

我完全同意,规格真的很模糊。按照yogur关于针对过滤器进行测试的绝妙建议,spec stept是否应该这样开始“假设发生了错误”?我认为在这种情况下,如果您针对handle错误过滤器编写测试,您应该将其声明为When子句。这样:当站点上发生错误时,应该重定向用户并记录错误