Как выполнить модульное тестирование библиотеки, использующей объект Session - PullRequest
1 голос
/ 23 января 2009

У меня несколько сайтов asp.net mvc, использующих один и тот же контроллер и модель.
Эта общая логика заложена в отдельных библиотеках. Эти библиотеки используют HttpContext.Current.Session. Как я могу сделать эти устройства тестируемыми? Я прочитал о StateValue, но не могу полностью понять это. Где мне взять эту вещь StateValue? Это ссылка на библиотеку?

Ответы [ 3 ]

1 голос
/ 23 января 2009
  1. Ваш код должен использовать IHttpSessionState, а не HttpSessionState.
  2. Если вы посмотрите документацию MSDN для IHttpSessionState, вы найдете пример реализации, который вы можете использовать в своем проекте модульного тестирования для создания фиктивного сеанса.
  3. Замените код, запрашивающий сеанс, статическим делегатом, который возвращает IHttpSessionState.
  4. Инициализируйте этот статический делегат функцией, которая использует HttpContext.Current.Session.
  5. Во время модульного тестирования замените делегата на Mock-реализацию IHttpSessionState.
1 голос
/ 10 мая 2012

только для того, чтобы вывести людей из этой провальной ямы (которая существует по состоянию на .NET 3.5) - не трогайте IHttpSessionState в целях насмешек и тестирования:

http://www.codemerlin.com/2011/07/mocking-httpcontext-httpresponse-httprequest-httpsessionstate-etc-in-asp-net/

1 голос
/ 23 января 2009

Вы можете использовать фиктивные помощники, такие как здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...