У меня есть некоторые методы в моем приложении, которые делают HTTP-запросы. Есть ли хороший способ имитировать сбои сети и плохие ответы для модульных тестов?Методы тестирования, которые обрабатывают HTTP-запросы
ответ
Подходит Mock Objects должен позволить вам выполнять такие моделирования легко; если вы не знакомы с этой концепцией, здесь есть tutorial.
Для сетевых сбоев ничего не происходит, прежде всего, отключая кабель ethernet от вашего компьютера (или d/c его беспроводной), а затем отключая любой кабель, который дает вам доступ к облаку.
Если по неверным ответам вы имеете в виду HTTP-ошибки, вы можете писать сценарии ASP, которые всегда будут бросать конкретные ошибки. Если вы хотите протестировать некорректные HTTP-пакеты, вам нужно написать простое приложение сокета, чтобы это сделать.
Не знаете, как вы интегрируете процесс отсоединения кабеля в свою автоматическую систему сборки, хотя :-) – assylias
Вытяните ваш локальную сеть провод или отключить беспроводной маршрутизатор в то время как запросы делаются :)
Что мы делаем в этой ситуации, это абстрактный слой, который делает вызов. Вместо того, чтобы ваша логика непосредственно выполняла HTTP-запрос, ваш код вызывает функцию. В том, что функция может быть что-то вроде:
if (in_test) {
response = get_test_response();
} else {
response = make_http_request();
}
Тогда вы можете иметь ваши модульные тесты установить какое-то значение, доступного с помощью функции get_test_response(). Таким образом, вы можете программно изменить, каков будет результат этого вызова.
Как правило, в вашем приложении есть такая логика. Я бы рекомендовал использовать макет объекта. – codecraig
Оберните библиотеку, которая заставляет HTTP-вызовы (например, java.net.URLConnection или Commons HttpClient) за интерфейсом, а затем записывает реализации или макеты этого интерфейса, которые имитируют условия сбоя.
Ваш интерфейс может просто представлять операции, которые необходимо выполнить вашему приложению, а не весь спектр функций HTTP-клиента.
Возможно, Spring test mocks будет полезен.
- 1. методы тестирования питона, которые называют методы класса
- 2. RSpec - методы тестирования, которые вызывают частные методы, которые следует издеваться
- 3. Перегруженные методы, которые обрабатывают подклассы некоторого абстрактного класса
- 4. Методы тестирования, которые ничего не возвращают
- 5. методы тестирования, которые зависят друг от друга
- 6. методы тестирования блока, которые используют глобальные переменные
- 7. Методы тестирования модулей тестирования
- 8. Методы тестирования
- 9. Как методы Python обрабатывают произвольные параметры?
- 10. методы, которые делают против методов, которые делегируют
- 11. Методы тестирования EJB 3.1
- 12. Методы тестирования, которые запрашивают базу данных с помощью JUnit
- 13. методы тестирования, которые возвращают маркеры или случайные значения Rspec
- 14. Методы тестирования модулей, которые делают вызов службы WCF?
- 15. методы тестирования, которые получают и устанавливают атрибуты в Rspec
- 16. Методы тестирования MVP на Android, которые нуждаются в сетевых операциях
- 17. Методы тестирования, которые зависят от по существу случайной переменной экземпляра
- 18. Методы тестирования единицы измерения, которые требуют нескольких зависимостей/других объектов
- 19. Методы тестирования тестовых единиц
- 20. Методы тестирования интеграции Spring?
- 21. Методы тестирования mocking ApexAsynJob
- 22. делегат методы OCMock тестирования
- 23. Методы тестирования компонентов Vue
- 24. Javascript scrollbars, которые обрабатывают фокус из окна
- 25. Несколько BroadcastReceivers, которые обрабатывают действие BOOT_COMPLETED?
- 26. Маркеры Matplotlib, которые обрабатывают и визуализируют быстро
- 27. Как создать функции, которые обрабатывают многочлены?
- 28. Реализации JSON, которые обрабатывают разреженные массивы
- 29. Методы тестирования класса тестирования с OCMock
- 30. Методы тестирования базы данных асинхронного тестирования
+1 Отметьте это, не путайте с тянущимися проводами. –
Срок действия учебного курса истек. – tokhi