Не уверен, что вам за счет тестирования не в памяти, но с интеграционным тестированием с использованием встроенного веб-API в памяти запросы отправляются непосредственно в HttpServer
, который является главным образом первым компонентом, который запускается в конвейере ASP.NET Web API. Это означает, что запросы не попадают в сетевой стек. Таким образом, вам не нужно беспокоиться о запуске на определенных портах и т. Д., А также, если вы пишете хорошее количество тестов, время, затрачиваемое на выполнение всех ваших тестов, не будет слишком большим, поскольку вы имеете дело со встроенной памятью, а не с сеть. Вы должны получить сопоставимое время работы как типичный единичный тест. Посмотрите на это отлично post от Kiran для получения дополнительной информации о тестировании в памяти. При тестировании в памяти будут задействованы все компоненты, которые вы настроили для запуска в конвейере, но одна вещь, на которую следует обратить внимание, - это форматирование. Если вы отправляете ObjectContent
в запрос, нет необходимости запускать медиаформаты, поскольку запрос уже находится в десериализованном формате и, следовательно, форматирование носителей не происходит.
Если вы хотите стать ближе и готовы принять удар по времени работы, вы можете написать свои тесты с помощью самообслуживания. Это то, что вы подразумеваете под тестированием без памяти? Например, вы можете использовать самостоятельный хостинг OWIN. Вы можете использовать API-интерфейс Katana для хостинга и размещать свой веб-API и использовать его с вашими запросами. Конечно, это будет использовать настоящий HttpListener, и запросы будут проходить через сетевой стек, хотя все это происходит на одной машине. Тесты будут сравнительно медленными, но вы, вероятно, приблизитесь к своим прогам.
Я лично не видел никого, кто пользуется веб-хостингом и проводит множество интеграционных тестов. Технически можно отключить ваши запросы с помощью HttpClient
и проверить ответ и утверждать, но у вас не будет много контроля над организацией ваших тестов программно.
Мой выбор состоит в том, чтобы смешивать и сопоставлять, то есть использовать как можно больше тестов в памяти и использовать хост на базе Katana только для тех конкретных случаев, которые мне нужны, чтобы действительно поразить сеть.
Разве ссылка на ссылку Kiran, которую вы опубликовали, действительна для Web API 2.0? – Elisabeth
Я так считаю. См. Это - http://stackoverflow.com/a/20874162 – Badri