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