HTTP сервер для модульных тестов в Delphi
Мне нужно протестировать некоторые компоненты HTTP в моем приложении Delphi. Я использую DUnit и хочу добавить некоторую автоматизацию в тестирование.
Итак, мой тестовый код должен запустить локальный HTTP-сервер, настроить его (например, подготовиться к разрыву соединения через 3 секунды, или имитировать низкую пропускную способность, или запросить логин / пароль и т. д.), запустить мои модульные тесты и закрыть HTTP-сервер.
Есть ли какие-то HTTP-серверы, доступные именно для Delphi/DUnit?
Я знаю, что у команды Mozilla есть такие сервер , но интегрировать его в DUnit не так-то просто.
3 ответов:
Я использую Indy'S
TIdHttpServerдля подачи материала в том же процессе.Этот подход позволяет мне проверить правильность поступающих запросов, а также проверить поведение со стороны клиента.
Кроме того, вы можете индивидуально настроить сервер на основе testcase by testcase, что делает ваши модульные тесты более понятными (это означает, что у вас нет части "теста" где-то еще).
Вы можете использовать модульный тест / DUnit для построения тестов автоматической интеграции. Допустим, вы, HTTP-компоненты, как http-клиент, выполняете вызовы веб-службы. Вы можете создать свой собственный макет веб-сервиса или просто использовать любой общедоступный веб-сервис, например, от Google или Amazon. Поэтому вам просто нужно создать учетную запись разработчика Google или Amazon и использовать некоторые базовые функции сервиса для тестирования.
Если вы тестируете SOAP-сервисы, используйте SoapUI, чтобы создать "макет" сервиса на основе вашего WSDL. Вы можете заставить его возвращать различные ответы (либо последовательно, либо использовать некоторые простые сценарии для сопоставления ответов с содержимым запроса.) Я сделал это, сопоставив "идентификатор запроса" (просто GUID) в моем запросе, отправленном из теста DUnit, с ответом в SoapUI. Это простой запрос xpath, чтобы сопоставить их.
Вы можете заставить его возвращать "консервированные" ошибки / исключения, и, конечно, когда он не работает, у вас будет тестовый случай" никого нет дома".
Comments