Использование издеваний Angularjs без фактического издевательства
Вопрос
Я пишу несколько тестов для нашего приложения, и я включил Angularjs-mocks.js, поэтому я могу использовать приятные функции DSL, которые поставляются с ним.
Но я не хочу, чтобы на самом деле насмешливую добавку $ http, поскольку я интегрирую это приложение с бэкэнда клиента, которая постоянно находится в потоке, и я хочу протестировать против реальных ответов.
Какой лучший (самый простой) способ использовать настоящую HTTP Backend в этой ситуации?
Редактировать:
Я нашел потенциальный раствор, который должен использовать это:
.
$httpBackend.whenPOST(/.*/).passThrough()
Но как я упоминаю ниже, это не работает, возможно сломано?Я получаю эту ошибку:
.
Error: Unexpected request: POST /some/url/here No more request expected
Я открыл проблему здесь: https://github.com/angular/angular.js / Выпуски / 1434
Решение
Я выяснил быстрое и грязное решение проблемы: комментируя линию, где $ httpbackend переопределяется (1365 в угловых макетах-1.0.2.js).
angular.module('ngMock', ['ng']).provider({
$browser: angular.mock.$BrowserProvider,
$exceptionHandler: angular.mock.$ExceptionHandlerProvider,
$log: angular.mock.$LogProvider,
//$httpBackend: angular.mock.$HttpBackendProvider,
$rootElement: angular.mock.$RootElementProvider
}).config(function($provide) {
$provide.decorator('$timeout', function($delegate, $browser) {
$delegate.flush = function() {
$browser.defer.flush();
};
return $delegate;
});
});
.
Это, вероятно, сломает что-то еще, но он позволяет мне проверить то, что мне нужно проверить, и не влияет на производственное приложение, так что все в порядке со мной.Надеюсь, в будущем будет построенный способ сделать это.