Вы можете использовать библиотеку MVC Contrib, предоставленную Outercurve Foundation, для макетирования состояния сеанса и других объектов, доступных во время обработки обычного запроса (HttpRequest, HttpResponse ... и т. Д.).
http://mvccontrib.codeplex.com/ (или используйте NuGet для его загрузки)
Содержит библиотеку TestHelper , которая помогает быстро создавать модульные тесты.
Например:
[TestMethod]
public void TestSomething()
{
TestControllerBuilder builder = new TestControllerBuilder();
// Arrange
HomeController controller = new HomeController();
builder.InitializeController(controller);
// Act
ViewResult result = controller.About() as ViewResult;
// Assert
Assert.IsNotNull(result);
}
Используя тип TestControllerBuilder, предоставляемый библиотекой MVC Contrib TestHelper, вы можете быстро инициализировать свой контроллер и инициализировать его внутренние элементы данных (HttpContext, HttpSession, TempData ...).
Конечно, сам HttpSessionState также подвергается насмешкам, поэтому добавление чего-либо к нему (Session.Add) на самом деле ничего не даст. Как и предполагалось, мы это высмеяли.
Похоже, что вы хотите смоделировать HttpContext, но все равно настроить его с рабочим состоянием сеанса. Похоже, вы хотите сделать что-то, как описано здесь:
http://jasonbock.net/jb/Default.aspx?blog=entry.161daabc728842aca6f329d87c81cfcb