编程语言
首页 > 编程语言> > c#-如何在ASP.NET Core 1.1中对使用HttpContext的MVC控制器进行单元测试

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

作者:互联网

我在.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的单元测试方面苦苦挣扎,并根据在此找到的旧信息和相对新信息尝试了许多不同的方法.问题在于HttpContext为null,并且在模拟它时一直没有成功.

编写此测试的任何帮助将不胜感激!

解决方法:

您可以使用此Helper函数中的DefaultHttpContext实例设置控制器.

    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.

标签:unit-testing,net-core,asp-net-core-mvc,c
来源: https://codeday.me/bug/20191112/2024199.html