Angular предотвращает насмешку над сервисом $ http

#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();