我的目标是IAuthorizationFilter
通过子类化AuthorizeAttribute
和覆盖来创建 MVC 的自定义实现bool AuthorizeCore(HttpContextBase httpContext);
作为潮人,我想做这种 TDD 风格。
(仅仅因为我说我是一个时髦并不意味着你可以导航回来。是的,我看到了。)
另外,我想像这样使用 ninject注入构造函数的某些参数。
所以,我的问题是如何对这样的设置进行单元测试?
这是我的属性设置:
public class MyAuthorize : FilterAttribute {
public MyAuthorize(params string[] Activities)
{
this.RequestedActivities = Activities.ToList();
}
public IEnumerable<string> RequestedActivities { get; set; }
}
public class MyAuthorizeFilter : AuthorizeAttribute
{
private readonly IEnumerable<string> _RequestingActivities;
private readonly IUserService _UserService;
public MyAuthorizeFilter(IUserService UserService, IEnumerable<string> Activities)
{
this._RequestingActivities = Activities;
_UserService = UserService;
}
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
return (_RequestingActivities.All(c=>c == "Permitted"));
}
}
我试图测试void OnAuthorization(AuthorizationContext filterContext);
暴露的方法,AuthorizeAttribute
但没有什么可以断言的。filterContext
没有以任何明显的方式改变。
我的下一步是创建一个带有[MyAuthorize("APermission")]
on 动作的模拟类,然后像这样调用它:
controller.ActionInvoker.InvokeAction(controller.ControllerContext, "Permitted");
但是由于我实际上并没有使用MyAuthorizeFilter
它,所以没有调用实际进行授权检查的代码。
老实说,我不知道如何进行。