0

背景:我们正在使用 MVC4 并使用 WIF 进行声明/授权。我们将 Moq/MvcContrib 用于样机对象。我在这里查看并创建了 MockIdentity 和 MockPrincipal 对象——我需要它们吗?

目标:我有一个控制器类,它具有类级别属性,仅允许具有“经理”声明的用户访问操作。我想创建模拟用户并测试以查看没有“经理”声明的任何人是否可以访问这些操作。

我得到了模拟概念,但我只处理了模拟数据对象,并且很难弄清楚我需要哪些插件/类/方法/设置来完成我需要做的事情。

提前致谢。

4

1 回答 1

3

我想创建模拟用户并测试以查看没有“经理”声明的任何人是否可以访问这些操作。

不,你没有。您只想将用户传递给您编写并测试设置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 */);
于 2012-04-29T09:31:02.113 回答