2011-01-31 24 views
0

我正在用SpecFlow在MVC3项目上做BDD。我目前的规范情景说:如何使用ASP.NET MVC进行规范测试错误视图

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全局过滤器重定向。

在特殊情况下,我使用Watin来测试行为是否符合规范所说的内容,但要做到这一点,我需要一个引发错误的视图,当所有工作都没有的时候。

任何关于这样的测试场景的想法?

回答

0

我对这个方案的一些想法:

1)“给定一个用户正在使用的系统”是一个很模糊的一步。在步骤定义中会找到哪些代码?除非您有一个拥有WorkingOnSystem方法的用户类,否则可能值得采用这一行。

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

想想这样:在系统中“什么时候发生错误”是什么意思?如果你的HandleError过滤器不是这个地方,那么你可能没有a的地方。在这种情况下,你需要更具体。


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

+0

我完全同意,规范真的很模糊。遵循yogur关于测试过滤器的明智建议,是否应该像这样开始“鉴于发生了错误”? – 2011-02-02 06:48:50

相关问题