我想创建模拟用户并测试以查看没有“经理”声明的任何人是否可以访问这些操作。
不,你没有。您只想将用户传递给您编写并测试设置filterContext.Result
正确的属性。而已。您无需测试 System.Web.Mvc 是否有效。单机待测!
大概你的属性是一个AuthorizeAttribute
,对吗?所以你需要测试OnAuthorization(AuthorizationContext)
。
免责声明:我有一段时间没有使用 moq,但您的代码大概看起来像这样:
var user = new Mock<IPrincipal>();
user.Setup(/* whatever you need to look at */);
var authContext = new Mock<AuthorizationContext>();
authContext.Setup(ac => ac.HttpContext.User).Returns(user);
var myAttribute = new RequireManagerAttribute();
myAttribute.OnAuthorization(authContext);
authContext.VerifySet(ac => ac.Result = /* whatever you expect */);