#javascript #angularjs #unit-testing #karma-runner
#javascript #angularjs #модульное тестирование #карма-бегун
Вопрос:
Я пишу несколько тестов для приложения Angular, подключающегося к REST API, которое мы также разрабатываем. В этом случае я на самом деле хочу выполнить интеграционный тест, а не модульный тест, поэтому я не хочу, чтобы $http
сервис издевался. Я хочу выполнить реальный AJAX-запрос и проверить, что ответ соответствует нашим ожиданиям.
Я не могу просто удалить angular-mock.js
, поскольку это требуется для других тестов, есть ли способ заставить angular использовать реальный сервис, а не заменять его на издевательский?
Ответ №1:
Вы пробовали использовать опцию «Сквозной»? Он был разработан специально для этой цели:
В отличие от модульного тестирования, в сценарии сквозного тестирования или в сценарии, когда приложение разрабатывается с заменой реального серверного API на макет, часто желательно, чтобы определенная категория запросов обходила макет и выдавала реальный http-запрос (например, для извлечения шаблонов илистатические файлы с веб-сервера). Чтобы настроить серверную часть с таким поведением, используйте обработчик
passThrough
запросаwhen
вместоrespond
.
например:
$httpBackend.whenGET(/my-resource/.*/).passThrough();