【问题标题】:Controller tests ignore global filters in ASP.Net MVC?控制器测试忽略 ASP.Net MVC 中的全局过滤器?
【发布时间】:2011-07-31 11:46:42
【问题描述】:

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

为了将其应用于所有控制器,我已将自定义授权属性添加到 RegisterGlobalFilters 中的 GlobalFilterCollection global.asax.cs 中。

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

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

【问题讨论】:

    标签: asp.net-mvc-3 authentication forms-authentication


    【解决方案1】:

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

    【讨论】:

    • 感谢您的链接。我明白现在该做什么了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-14
    • 2020-11-22
    相关资源
    最近更新 更多