gpt4 book ai didi

c# - 如何在 ASP.NET Core 1.1 中对使用 HttpContext 的 MVC Controller 进行单元测试

转载 作者:行者123 更新时间:2023-12-02 05:35:37 25 4
gpt4 key购买 nike

我在 .Net Core 1.1 框架上用 ASP.Net Core 编写了这个小方法:

public class AccountController : Controller
{
public IActionResult Logout()
{
HttpContext.Authentication.SignOutAsync("SchemaName");
HttpContext.Authentication.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);

return RedirectToAction("Index", "Home");
}
}

我在如何编写一个单元测试来验证此方法是否返回一个 RedirectToActionResult 方面遇到了很多困难,并根据到处发现的旧信息和相对新信息尝试了许多不同的方法。问题是 HttpContextnull 并且我没有成功地模拟它。

对于编写此测试的任何帮助,我们将不胜感激!

最佳答案

您可以使用 DefaultHttpContext 的实例设置 Controller ,就像在此辅助函数中一样。

    public MyController CreateController()
{
var actionContext = new ActionContext
{
HttpContext = new DefaultHttpContext(),
RouteData = new RouteData(),
ActionDescriptor = new ControllerActionDescriptor()
};

var controller = new MyController
{
ControllerContext = new ControllerContext(actionContext)
};

return controller;
}

然后MyController实例的HttpContext属性不再是null并且它在HttpContext.Authentication中提供了一个默认的AuthenticationManager 属性。

关于c# - 如何在 ASP.NET Core 1.1 中对使用 HttpContext 的 MVC Controller 进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40672581/

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