Установите сеанс на NULL, используя mvccontrib testheelper
-
09-10-2019 - |
Вопрос
У меня есть действие в моем контроллере, который проверяет, истекает ли моя сессия (== NULL) и, если это так, перенаправляйте на мой логин. Я хотел бы добавить тест подразделения для этого, но я не могу установить сеанс NULL или либо издеваться на его. Любой знает, как я мог сделать это, и если это хорошая идея, чтобы проверить это?
Вот мой контроллер:
private InvestigationStep2Model _step2Model
{
get
{
if (Session == null) return null;
if (Session["investigationStep2"] == null) Session["investigationStep2"] = new InvestigationStep2Model();
return (InvestigationStep2Model) Session["investigationStep2"];
}
set { Session["investigationStep2"] = value; }
}
public virtual ActionResult Step2()
{
if (_step2Model == null) return RedirectToAction(MVC.Session.Logout());
ViewData.Model = _step2Model;
return View();
}
И мой тест со всеми моими попытками насмехаться
[Test]
public void Step2_RedirectToActionWhenNoSession()
{
_builder.InitializeController(_controller);
Expect.Call(_controller.Session).Repeat.Any().Return(null);
//_controller.HttpContext.Session.Abandon();//.SetSessionStateBehavior(SessionStateBehavior.Disabled); // .Session..Abandon());// .Stub(b => b.Session).Return(null);
_mock.ReplayAll();
var result = _controller.Step2();
_mock.VerifyAll();
result.AssertActionRedirect().ToAction<SessionController>(c => c.Logout());
}
Но ничего не работает ...
Благодарю вас!
Решение
Вот как я это сделал:
[Test]
public void Step2_RedirectToActionWhenNoSession()
{
_builder.InitializeController(_controller);
_controller.HttpContext.BackToRecord();
_controller.HttpContext.Stub(c => c.Session).Return(null);
_controller.HttpContext.Replay();
_mock.ReplayAll();
var result = _controller.Step2();
_mock.VerifyAll();
result.AssertActionRedirect().ToAction<SessionController>(c => c.Logout());
}
Не связан с StackOverflow