Тестирование веб-API с помощью HttpServer или HttpSelfHostServer

Я пытаюсь выполнить часть модульного тестирования для проекта веб-API. Я собираюсь имитировать веб-хостинг веб-приложений. Похоже, что я мог бы использовать Хост памяти (HttpServer) или собственный хост (HttpSelfHostServer).

Просто интересно, какая разница и какая технология хороша для чего и есть ли ограничения для этих опций.

Ответ 1

Вы должны использовать в хосте памяти для сквозных тестов, а затем отдельно тестировать сетевое подключение среды.

По ряду причин:

  • В хосте памяти, как следует из названия, выполняется полностью в памяти, поэтому будет намного быстрее

  • Самостоятельный хост должен запускаться с повышенными привилегиями, поэтому ваши тесты должны выполняться в контексте идентификатора "admin". Это далеко не так. Особенно неприятно, если вы хотите выполнить тесты из сценариев сборки или из PowerShell, так как в результате эти процессы также должны запускаться с повышенными привилегиями. Кроме того, это должно произойти на любом из серверов, на которых вы тестируете.

  • В собственном хосте вы завершаете тестирование сетевого стека сетевых операционных систем, который действительно не должен тестироваться, поскольку он может различаться в разных средах (разработка, постановка, QA, производство и т.д.). Например, данный порт может быть недоступен. В результате вы можете перетащить ненужные усилия по отладке на разных машинах, чтобы даже запустить тесты.

  • Наконец, тестирование с использованием самообслуживания по-прежнему не гарантирует правильность работы службы при размещении в сети и наоборот - так что вы можете просто протестировать в памяти