我已经使用具有声明权限的CheckAccess代码:
public ActionResult Index()
{
ClaimsPrincipalPermission.CheckAccess("foo", "bar");
return View();
}
我有这样的单元测试:
[TestMethod]
public void TestIndex()
{
HomeController controller = new HomeController();
ViewResult result = controller.Index() as ViewResult;
Assert.IsTrue(result.View != null);
}
如何模拟ClaimsPrincipalPermission始终成功返回?我知道我可以将此代码移动到一个可以解决问题的属性。但是,有些情况下我希望强制调用CheckAccess。
答案 0 :(得分:2)
我建议将此功能包装到依赖项中,并使用Dependancy Injection使代码“可测试”。
这个函数将“覆盖”这个功能提取到另一个类中并将该类注入控制器。
通过这样做,您可以将对静态方法的依赖移除到基于实例的方法,并确保您获得可靠的测试结果。
http://www.asp.net/mvc/tutorials/hands-on-labs/aspnet-mvc-4-dependency-injection