gpt4 book ai didi

c# - 如何在 Asp.Net MVC 4 中模拟 HttpContext.User.Identity.Name

转载 作者:IT王子 更新时间:2023-10-29 04:21:05 27 4
gpt4 key购买 nike

我在 Controller 中有使用 HttpContext

的代码
public ActionResult Index()
{

var currentUser=HttpContext.User.Identity.Name;
......

}

当尝试像这样使用 NUnit 编写测试时

[Test]
public void CanDisplayRequest()
{
//Act
var result= (ViewResult)_requestController.Index();

//Assert
Assert.IsInstanceOf<OrderRequest>(resut.Model);
}

测试将失败,因为它找不到 HttpContext

那么我如何模拟 HttpContext.Current.User.Identity.Name

我正在使用 Moq 进行模拟

最佳答案

您可以使用伪造的上下文和伪造的主体来初始化您的 Controller ,如下所示

var fakeHttpContext = new Mock<HttpContextBase>();
var fakeIdentity = new GenericIdentity("User");
var principal = new GenericPrincipal(fakeIdentity, null);

fakeHttpContext.Setup(t => t.User).Returns(principal);
var controllerContext = new Mock<ControllerContext>();
controllerContext.Setup(t => t.HttpContext).Returns(fakeHttpContext.Object);

_requestController = new RequestController();

//Set your controller ControllerContext with fake context
_requestController.ControllerContext = controllerContext.Object;

关于c# - 如何在 Asp.Net MVC 4 中模拟 HttpContext.User.Identity.Name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19006624/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com