Используя httpcontext в модульном тесте

Я использую C#4.0, и мне нужен к модульному тесту сервис. Функция в сервисе возвращает путь, подобный переменной, которую я назвал ожидаемым, это - путь, который я ожидаю возвращать. Но когда я запускаю этот тест, я получаю ошибку что HttpContext. Текущий является ПУСТЫМ. То, что я могу сделать для устранения этой проблемы, таким образом, тест может быть, работало?

[TestMethod]
public void GetPathTest()
{
   var expected = System.IO.Path.GetFullPath(HttpContext.Current.Server.MapPath("~/Certificates/"));
   var path = _mockService.Setup(o => o.GetPath()).Returns(expected);
}
13
задан Rob 13 July 2010 в 06:42
поделиться

3 ответа

На данный момент я не могу найти свою полную оболочку для HttpContext, которую я использовал ранее, но на данный момент мы просто создаем контекст для пустого запроса и переходим оттуда, например:

SimpleWorkerRequest request = new SimpleWorkerRequest("","","", null, new StringWriter());
HttpContext context = new HttpContext(request);

Затем в инициализации модульного теста или в самом модульном тесте (перед созданием ожидаемого) вы можете установить текущий HttpContext следующим образом:

HttpContext.Current = context;

Затем просто конкретизируйте поддельный контекст и возможное поддельное состояние сеанса и т. Д. По мере необходимости.

(Edit: это все в VS2008, кстати, framework 3.5).

17
ответ дан 1 December 2019 в 22:22
поделиться

Вы можете попробовать посмотреть на атрибуты, созданные для модульного тестирования ASP.Net, например

[HostType("ASP.NET")]

По этой ссылке на MSDN довольно хорошо написано об этом

2
ответ дан 1 December 2019 в 22:22
поделиться

Я размещаю это для справки. Это не простое решение, и в нем говорится о Duck Typing (если он крякнет...):

http://haacked.com/archive/2007/08/19/why-duck-typing-matters-to-c-developers.aspx

http://haacked.com/archive/2007/09/09/ihttpcontext-and-other-interfaces-for-your-duck-typing-benefit.aspx

Это актуально и стоит прочитать; поскольку нет IHttpContext, невозможно создать реализацию тестовой среды - пока вы не рассмотрите возможность использования библиотеки Duck Typing здесь. Хотя это и не прямой ответ.

Надеюсь, это поможет.

1
ответ дан 1 December 2019 в 22:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: