У меня проблема с модульным тестированием asp.net core mvc controller!
проблема в том, что в моем контроллере я использую сессии:
[HttpPost]
public IActionResult OpretLobby(LobbyViewModel lobby)
{
try
{
//find brugeren der har lavet lobby
var currentUser = HttpContext.Session.GetObjectFromJson<User>("user");
//save as a lobby
ILobby nyLobby = new Lobby(currentUser.Username)
{
Id = lobby.Id
};
SessionExtension.SetObjectAsJson(HttpContext.Session, lobby.Id, nyLobby);
//add to the list
_lobbyList.Add(nyLobby);
return RedirectToAction("Lobby","Lobby",lobby);
}
все это прекрасно работает в режиме онлайн на сервере, здесь все в порядке.
НО, когда дело доходит до требования модульного тестирования, все это уже не так идеально.
По сути, проблема в том, что я не могу получить доступ к своему сеансу из теста. Я пытался разными способами создавать фиктивные изменения, а что нет, но большинство решений работают для .net framework, а не для .net ядро по какой-то причине! Пожалуйста, помогите мне от боли!
примечание:
Я использовал фиктивную версию теста, чтобы изолировать эту проблему:
[Test]
public void TestIsWorking()
{
SessionExtension.SetObjectAsJson(uut.HttpContext.Session, "user", _savedUser);
//ViewResult result = uut.OpretLobby(lobbyViewModel) as ViewResult;
//Assert.AreEqual("OpretLobby", result.ViewName);
Assert.AreEqual(1,1);
}
тоже идет не так, пытаясь установить сеанс для пользователя: /