0

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

4

1 回答 1

2

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

这涉及“提取覆盖”此功能到不同的类中并将该类注入到控制器中。

这样做可以消除您对基于实例的方法对静态方法的依赖,并确保您获得可靠的结果以用于测试目的。

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

于 2013-05-31T12:47:05.803 回答