Почему ложный HttpContext, если это может быть создано?

System.DayOfWeek strike>

MSDN

Большую часть времени используют int. Не для производительности, а для простоты.

7
задан Dmytrii Nagirniak 6 November 2009 в 12:13
поделиться

3 ответа

Это нормально для очень простого тестирования, но как бы вы провели модульное тестирование компонента, использующего HttpRequest.Files? Насколько мне известно, нет общедоступных API, позволяющих указать это в SimpleWorkerRequest. Даже если вы могли бы найти место, где вы могли бы установить свойство HttpFileCollection, обратите внимание, что его конструктор является внутренним, поэтому вы даже не можете создать экземпляр этого типа.

HttpRequest.Files не единственный в этом отношении, и в на самом деле, вероятно, вы не сможете протестировать с текущей реализацией HttpContext гораздо больше вещей, чем вы можете . Здесь действительно пригодятся абстракции.

5
ответ дан 7 December 2019 в 07:46
поделиться

Есть несколько сценариев, которые следует рассмотреть.

Сценарий первый: вы выполняете модульное тестирование. у вас есть что-то маленькое, например класс, который управляет доступом к кешу и явно вызывает HttpContent.Cache. В этом случае имитируйте контекст, чтобы вы могли видеть, какие звонки выполняются и работают ли они так, как вы ожидаете.

Сценарий второй: вы выполняете интеграционный тест, когда пытаетесь протестировать что-то большое, например создание сложной страницы. В этом случае дайте ему реальный объект HttpContent, как вы нашли. Ваш интеграционный тест лучше имитирует реальную среду выполнения.

2
ответ дан 7 December 2019 в 07:46
поделиться

Это может сработать, но ...

  • Во-первых, я вижу несколько путей, которые могут отличаться в разных средах.
  • Во-вторых, нужно ли установить что-то вроде IIS?
  • Как много времени уходит на его создание? Если у меня есть 100 тестов, которые нуждаются в этом, и это занимает 1 секунду, это означает, что мой тестовый запуск занимает около минуты или больше, и это приводит к тому, что разработчики запускают тесты меньше.
  • Насколько легко вы можете имитировать / настраивать кеш, запрос и т. тестовый сценарий?

Мокинг / заглушка, вероятно, проще.

РЕДАКТИРОВАТЬ

Нашел исходный код для HttpContext и SimpleWorkerRequest в проекте Mono:

Те могут дать лучше понять, что происходит в процессе создания.

Нашел статью, которая также может быть полезна: ASP. NET CreateApplicationHost / SimpleWorkerRequest API Hole

Это на самом деле хорошо иллюстрирует, что нам нужно понимать, что происходит в этих объектах, прежде чем применять их, а это требует времени. Издевательство кажется проще.

0
ответ дан 7 December 2019 в 07:46
поделиться
Другие вопросы по тегам:

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