2011-07-31 101 views
1

我刚刚开始编写的ASP.Net MVC 3应用程序需要对所有控制器进行身份验证,但AccountsController除外。我没有用[Authenticate]装饰我的所有控制器,而是写了两个自定义属性。第一个从AuthorizationAttribute继承,并检查当前动作是否用另一个AllowAnonymous进行装饰。如果不是,则使用表单身份验证来查看当前用户是否已通过身份验证,如果没有,则重定向到登录页面。控制器测试忽略ASP.Net MVC中的全局过滤器?

要将此应用于所有控制器,我已将我的自定义授权属性添加到GlobalFilterCollectionRegisterGlobalFiltersglobal.asax.cs中。

这一切都在浏览器中运行,但当我运行MVC Internet应用程序附带的默认测试以查看主页的HomeControllerTest测试通过并且表示“Welcome To ASP.NET MVC”文本在ViewBag中。我原本以为这个测试会失败,因为在浏览器中查看这个动作会重定向到登录页面,除非用户已经登录。

是我的方法来验证错误或我需要在测试中写东西应用全局过滤器?单步测试表明,过滤器正在被添加,但它们没有以我期望的方式应用。

回答

2

你的方法听起来不错。但是,您需要分别测试控制器和操作过滤器。请参阅following question

+0

感谢您的链接。我明白现在该做什么。 – Eifion