Как angular узнает, что $ httpBackend заменяет $ http в тестах angularjs?

0

У меня есть фабрика под названием myFactory, у которой есть зависимость $ http. В моих тестах я хочу издеваться над этой зависимостью. Я узнал, что могу добиться этого, используя $ httpBackend. Я использовал код ниже, и он работает. Но я не понимаю, почему. В какой момент угловой знает, что httpBackend фактически заменяет $ http, который находится внутри myFactory?

beforeEach(inject(function(_myFactory_, _$httpBackend_){
    myFactory = _myFactory_;
    $httpBackend = _$httpBackend_;
}));
Теги:
unit-testing
karma-jasmine
jasmine

1 ответ

7
Лучший ответ

Он не заменяет $ http, его заменяет службу под названием $ httpBackend, которую вы никогда не использовали, потому что ее использовали только внутренне. У углового есть множество "частных" сервисов, которые он использует. Таким образом, $ http вводится с реальным $ httpBackend обычно, но когда angular-mocks.js загружается (после того, как angular.js, порядок важен), он в основном перезаписывает реальный $ httpBackend с макетным.

  • 0
    Спасибо !!! Итак, когда загружен angular-mocks.js, что еще может быть автоматически смоделировано? Я не нашел ни одного документа, рассказывающего это.
  • 0
    Все эти вещи: docs.angularjs.org/api/ngMock#object . В $ timeout добавлен удобный метод .flush (), который может сбрасывать все ожидающие таймауты. Вы можете сбросить таймауты, которые были поставлены в очередь. Плюс больше вещей ...
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню