Я тестирую 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
.
Есть ли способ сделать это?