gpt4 book ai didi

asp.net-mvc - 测试使用 User.Identity.Name 的 Controller 操作

转载 作者:行者123 更新时间:2023-12-03 08:12:48 25 4
gpt4 key购买 nike

我有一个依赖 User.Identity.Name 来获取当前用户的用户名以获取他的订单列表的操作:

public ActionResult XLineas()
{
ViewData["Filtre"] = _options.Filtre;
ViewData["NomesPendents"] = _options.NomesPendents;
return View(_repository.ObteLiniesPedido(User.Identity.Name,_options.Filtre,_options.NomesPendents));
}

现在我正在尝试为此编写单元测试,但我陷入了如何为 User.Identity.Name 提供 Mock 的问题上。如果我按我的方式运行测试(没有用户模拟...),我会得到一个 Null.. 异常。

哪个是正确的方法?我认为我的操作代码不适合单元测试。

最佳答案

您可以使用此代码

public SomeController CreateControllerForUser(string userName) 
{
var mock = new Mock<ControllerContext>();
mock.SetupGet(p => p.HttpContext.User.Identity.Name).Returns(userName);
mock.SetupGet(p => p.HttpContext.Request.IsAuthenticated).Returns(true);

var controller = new SomeController();
controller.ControllerContext = mock.Object;

return controller;
}

它使用 Moq模拟框架,但确保你可以使用任何你喜欢的东西。

关于asp.net-mvc - 测试使用 User.Identity.Name 的 Controller 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1389744/

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