如何在Asp.NetMVC4中模拟HttpContext.User.Identity.Name我在控制器中有代码使用HttpContextpublicActionResultIndex(){varcurrentUser=HttpContext.User.Identity.Name;......}tryWhenwritingtestsusingNUnitlikethis[Test]publicvoidCanDisplayRequest(){//Actvarresult=(ViewResult)_requestController.Index();//断言Assert.IsInstanceOf(resut.Model);测试将失败,因为它找不到HttpContext那么如何模拟HttpContext.Current.User.Identity.Name我正在使用Moq进行模拟你可以用假主体伪造上下文来初始化你的控制器,就像这样varfakeHttpContext=newMock();varfakeIdentity=newGenericIdentity("用户");varprincipal=newGenericPrincipal(fakeIdentity,null);fakeHttpContext.Setup(t=>t.User).Returns(principal);varcontrollerContext=newMock();controllerContext.Setup(t=>t.HttpContext).Returns(fakeHttpContext.Object);_requestController=newRequestController();//用假上下文设置你的控制器ControllerContext_requestController.ControllerContext=controllerContext.Object;要仅使用Microsoft测试(无第3方框架),您可以执行以下操作:公共类MockHttpContextBase:HttpContextBase{publicoverrideIPrincipalUser{get;正在使用,需要多了解C#学习教程,希望大家多多关注—varuserToTest="User";字符串[]角??色=空;varfakeIdentity=newGenericIdentity(userToTest);varprincipal=newGenericPrincipal(fakeIdentity,roles);varfakeHttpContext=newMockHttpContextBase{User=principal};varcontrollerContext=newControllerContext{HttpContext=fakeHttpContext};//这是我们要测试的控制器:_requestController=newRequestController();//现在用假上下文设置控制器ControllerContext_requestController.ControllerContext=controllerContext;本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
