Как «снять» с HostingEnvironment - PullRequest
1 голос
/ 08 апреля 2019

В настоящее время я пишу модульные тесты для приложения ASP Net MVC, и одна из вещей, которые мне нужно смоделировать, - это HTTP-запрос.Для этого я использую библиотеку HttpSimulator (Subtext.TestLibrary).

Я вызываю метод SimulateRequest (), и одна из его функций - создание объекта HostingEnvironment.

_httpSimulator = new HttpSimulator().SimulateRequest(new Uri());

Перед имитацией HTTPзапрос, я должен использовать значение свойства HostingEnvironment.IsHosted в моем коде (в условии условия).

Все отлично работает для первого теста, потому что я получаю правильное значение для HostingEnvironment.IsHosted (который FALSE).

Однако, когда SimulateRequest () создает объект HostingEnvironment, HostingEnvironment.IsHosted становится ИСТИНОЙ, поэтому при выполнении второго теста я получаю значение ИСТИНА, что приводит к неверным результатам (или исключению).

HostingEnvironment environment = new HostingEnvironment();

Поэтому я пытаюсь найти способ сбросить HostingEnvironment.IsHosted обратно в FALSE.Это свойство, однако, доступно только для чтения.

Я также не вижу ни одного метода, который бы сбрасывал это свойство (я ожидаю, что либо Завершить, Завершить или что-то еще).

1 Ответ

0 голосов
/ 08 апреля 2019

Похоже, ваши тесты слишком тесно связаны с несколькими тестами, использующими один и тот же экземпляр HostingEnvironment ().

Каждый тест обычно должен выполняться независимо друг от друга, чтобы результаты, например теста 1влияют, например, на результаты теста 2.

Просто используйте отдельные экземпляры HostingEnvironment():

 [Test]
 public void InitializeContext()
 {
     using (HttpSimulator simulator = new HttpSimulator())
     {
        //Test #1...
     }
 }

[Test]
public void Simulator_Assigns_CurrentContext()
{
    using (HttpSimulator simulator = new HttpSimulator())
    {
        //Test #2...
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...