Asp.net mvc 3 控制器测试忽略ASP.NETMVC中的全局过滤器?

Asp.net mvc 3 控制器测试忽略ASP.NETMVC中的全局过滤器?,asp.net-mvc-3,authentication,forms-authentication,Asp.net Mvc 3,Authentication,Forms Authentication,我刚刚开始编写的ASP.Net MVC 3应用程序需要对所有控制器进行身份验证,除了AccountsController。我没有用[Authenticate]装饰所有控制器,而是编写了两个自定义属性。第一个继承自AuthorizationAttribute,它检查当前操作是否用另一个AllowAnonymous修饰。如果不是,则使用表单身份验证查看当前用户是否经过身份验证,如果没有,则重定向到登录页面 要将此应用于所有控制器,我已将自定义授权属性添加到global.asax.cs中的global

我刚刚开始编写的ASP.Net MVC 3应用程序需要对所有控制器进行身份验证,除了
AccountsController
。我没有用
[Authenticate]
装饰所有控制器,而是编写了两个自定义属性。第一个继承自
AuthorizationAttribute
,它检查当前操作是否用另一个
AllowAnonymous
修饰。如果不是,则使用表单身份验证查看当前用户是否经过身份验证,如果没有,则重定向到登录页面

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

这一切都可以在浏览器中运行,但当我运行MVC Internet应用程序附带的默认测试时,看到主页的HomeControllerTest测试通过,并且说“欢迎使用ASP.NET MVC”文本在ViewBag中时,我感到惊讶。我本以为该测试会失败,因为在浏览器中查看时,除非用户已登录,否则该操作将重定向到登录页面


我的身份验证方法是错误的还是我需要在测试中编写一些东西来应用全局过滤器?逐步进行单元测试表明正在添加过滤器,但它们没有按我期望的方式应用

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

谢谢您的链接。我知道现在该怎么办了。