【发布时间】:2018-01-04 20:22:45
【问题描述】:
我正在使用 Microsoft.VisualStudio.TestTools.UnitTesting 和 Moq 为 ASP.NET MVC 5 应用程序编写单元测试,该应用程序具有通过 FilterConfig.cs 添加的自定义授权过滤器:
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new AuthorizeRedirect());
//...
}
}
这是自定义授权属性:
public class AuthorizeRedirect: AuthorizeAttribute
{
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
base.HandleUnauthorizedRequest(filterContext);
if (filterContext.RequestContext.HttpContext.User.Identity.IsAuthenticated)
{
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new
{
action = "Redirect",
controller = "Error"
}));
}
}
}
我正在使用 IsAnonymous 方法的略微修改版本:https://datatellblog.wordpress.com/2015/05/05/unit-testing-asp-net-mvc-authorization/。然而,它只检查明确定义的[AuthorizeRedirect] 属性的方法/控制器;在它不存在的情况下,它认为该操作是匿名的。
在检查动作是否允许匿名访问时,是否可以检测到上述属性已在单元测试中全局应用?
【问题讨论】:
标签: c# asp.net-mvc unit-testing