Я пытаюсь провести модульное тестирование своего HomeController
, я могу успешно протестировать действие Index, но у меня возникла проблема с проверкой выхода из системы.Вот мой код:
[Authorize]
public class HomeController : Controller
{
private readonly ILogger _logger;
public HomeController(ILogger<HomeController> logger)
{
_logger = logger;
}
public IActionResult Index()
{
return View();
}
public async Task Logout()
{
await HttpContext.SignOutAsync("Cookies");
await HttpContext.SignOutAsync("oidc");
}
}
И тесты
public class HomeControllerTests
{
private readonly IServiceProvider _serviceProvider;
public HomeControllerTests()
{
var services = new ServiceCollection();
services.AddLogging();
_serviceProvider = services.BuildServiceProvider();
}
[Fact]
public void GetIndex()
{
// Arrange
var logger = _serviceProvider.GetRequiredService<ILogger<HomeController>>();
var controller = new HomeController(logger);
// Action
var result = controller.Index();
// Assert
var viewResult = Assert.IsType<ViewResult>(result);
Assert.Null(viewResult.ViewName);
Assert.NotNull(viewResult.ViewData);
}
[Fact]
public void GetLogout()
{
// Arrange
var logger = _serviceProvider.GetRequiredService<ILogger<HomeController>>();
var controller = new HomeController(logger);
// Action
var result = controller.Logout();
// Assert
var viewResult = Assert.IsType<ViewResult>(result);
Assert.Null(viewResult.ViewName);
Assert.NotNull(viewResult.ViewData);
}
}
Проблема в том, что HttpContext
равен нулю, что я пропустил в своей конфигурации внедрения зависимостей?