Как выполнить модульное тестирование HttpContext.SignOutAsync («Cookies») - PullRequest
0 голосов
/ 09 мая 2019

Я пытаюсь провести модульное тестирование своего 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 равен нулю, что я пропустил в своей конфигурации внедрения зависимостей?

...