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

时间:2011-01-31 13:53:02

标签: 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模板给出的Error视图没有控制器,也没有使用控制器,因为HandleError全局过滤器重定向。

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

有关此类测试方案的任何想法吗?

1 个答案:

答案 0 :(得分:0)

我对这种情况有一些想法:

1。)“鉴于用户正在使用该系统”是一个非常模糊的步骤。在步骤定义中可以找到什么代码?除非你有一个具有WorkingOnSystem方法的用户类,否则可能值得采用这一方法。

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

以这种方式思考:“当出现错误时”在您的系统中意味着什么?如果你的HandleError过滤器不在那里,那么你可能没有一个的地方。在这种情况下,您需要更具体。


我认为这个规范的尴尬是由于ASP.Net MVC。当你处理一个抽象框架时,你有时会把你的规范“包装”在它的某些部分周围。当应用程序的各个部分来自很多地方时,我们不能轻易地端到端。