@@ -1313,9 +1313,8 @@ angular.mock.dump = function(object) {
1313
1313
});
1314
1314
```
1315
1315
*/
1316
- angular . mock . $HttpBackendProvider = function ( ) {
1317
- this . $get = [ '$rootScope' , '$timeout' , createHttpBackendMock ] ;
1318
- } ;
1316
+ angular . mock . $httpBackendDecorator =
1317
+ [ '$rootScope' , '$timeout' , '$delegate' , createHttpBackendMock ] ;
1319
1318
1320
1319
/**
1321
1320
* General factory function for $httpBackend mock.
@@ -1336,7 +1335,10 @@ function createHttpBackendMock($rootScope, $timeout, $delegate, $browser) {
1336
1335
expectations = [ ] ,
1337
1336
responses = [ ] ,
1338
1337
responsesPush = angular . bind ( responses , responses . push ) ,
1339
- copy = angular . copy ;
1338
+ copy = angular . copy ,
1339
+ // We cache the original backend so that if both ngMock and ngMockE2E override the
1340
+ // service the ngMockE2E version can pass through to the real backend
1341
+ originalHttpBackend = $delegate . $$originalHttpBackend || $delegate ;
1340
1342
1341
1343
function createResponse ( status , data , headers , statusText ) {
1342
1344
if ( angular . isFunction ( status ) ) return status ;
@@ -1421,7 +1423,7 @@ function createHttpBackendMock($rootScope, $timeout, $delegate, $browser) {
1421
1423
// if $browser specified, we do auto flush all requests
1422
1424
( $browser ? $browser . defer : responsesPush ) ( wrapResponse ( definition ) ) ;
1423
1425
} else if ( definition . passThrough ) {
1424
- $delegate ( method , url , data , callback , headers , timeout , withCredentials , responseType , eventHandlers , uploadEventHandlers ) ;
1426
+ originalHttpBackend ( method , url , data , callback , headers , timeout , withCredentials , responseType , eventHandlers , uploadEventHandlers ) ;
1425
1427
} else throw new Error ( 'No response defined !' ) ;
1426
1428
return ;
1427
1429
}
@@ -1897,6 +1899,8 @@ function createHttpBackendMock($rootScope, $timeout, $delegate, $browser) {
1897
1899
responses . length = 0 ;
1898
1900
} ;
1899
1901
1902
+ $httpBackend . $$originalHttpBackend = originalHttpBackend ;
1903
+
1900
1904
return $httpBackend ;
1901
1905
1902
1906
@@ -2394,14 +2398,14 @@ angular.module('ngMock', ['ng']).provider({
2394
2398
$exceptionHandler : angular . mock . $ExceptionHandlerProvider ,
2395
2399
$log : angular . mock . $LogProvider ,
2396
2400
$interval : angular . mock . $IntervalProvider ,
2397
- $httpBackend : angular . mock . $HttpBackendProvider ,
2398
2401
$rootElement : angular . mock . $RootElementProvider ,
2399
2402
$componentController : angular . mock . $ComponentControllerProvider
2400
2403
} ) . config ( [ '$provide' , '$compileProvider' , function ( $provide , $compileProvider ) {
2401
2404
$provide . decorator ( '$timeout' , angular . mock . $TimeoutDecorator ) ;
2402
2405
$provide . decorator ( '$$rAF' , angular . mock . $RAFDecorator ) ;
2403
2406
$provide . decorator ( '$rootScope' , angular . mock . $RootScopeDecorator ) ;
2404
2407
$provide . decorator ( '$controller' , createControllerDecorator ( $compileProvider ) ) ;
2408
+ $provide . decorator ( '$httpBackend' , angular . mock . $httpBackendDecorator ) ;
2405
2409
} ] ) ;
2406
2410
2407
2411
/**
@@ -2416,7 +2420,6 @@ angular.module('ngMock', ['ng']).provider({
2416
2420
* the {@link ngMockE2E.$httpBackend e2e $httpBackend} mock.
2417
2421
*/
2418
2422
angular . module ( 'ngMockE2E' , [ 'ng' ] ) . config ( [ '$provide' , function ( $provide ) {
2419
- $provide . value ( '$httpBackend' , angular . injector ( [ 'ng' ] ) . get ( '$httpBackend' ) ) ;
2420
2423
$provide . decorator ( '$httpBackend' , angular . mock . e2e . $httpBackendDecorator ) ;
2421
2424
} ] ) ;
2422
2425
0 commit comments