ASP.NET MVC ClaimsPrincipalPermission.CheckAccess强制调用和单元测试

时间:2013-05-29 19:26:50

标签: asp.net-mvc wif

我已经使用具有声明权限的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。

1 个答案:

答案 0 :(得分:2)

我建议将此功能包装到依赖项中,并使用Dependancy Injection使代码“可测试”。

这个函数将“覆盖”这个功能提取到另一个类中并将该类注入控制器。

通过这样做,您可以将对静态方法的依赖移除到基于实例的方法,并确保您获得可靠的测试结果。

http://www.asp.net/mvc/tutorials/hands-on-labs/aspnet-mvc-4-dependency-injection