.CORE xUnit Test HttpContext.Session - PullRequest
       19

.CORE xUnit Test HttpContext.Session

0 голосов
/ 03 июля 2019

Я тестирую Api Controller с помощью xUnit.
В тестовом методе мне нужно установить некоторую переменную, например LoginUser для HttpContext.Session , и получить ее в Tested Controller .

Мой контроллер:

    [HttpGet, Route("SomeTestedApi")]
    public async Task<ActionResult<bool>> SomeTestedApi(int id)
    {
        try
        {
            var sessionUser = HttpContext.Session.Get<LoginUser>("loginUser");
        }
    }

Мой тест xUnit:

    [Fact]
    public async Task ChangeMySupplierTest()
    {
        try
        {
            LoginUser loginUser = await login();
            _httpContext.Session.Set("loginUser", loginUser);
            var request = "/api/SomeTestedApi/?id=5";
            var response = await _client.GetAsync(request);
            Assert.Equal(response.ReasonPhrase, "OK");

        }
    }

Если контроллер вызван через действительный HTTP request, он вызывается после того, как LoginControllerбыл казнен.В этом случае объект SessionContext.Session уже получил значение.

Но при вызове через тест на самом деле не удерживает HttpContext.Session, поэтому я получаю NULL.

Есть ли способ сделать это?

...