passthrough ngmocke2e mock angularjs jasmine httpbackend

angularjs - ngmocke2e - httpbackend passthrough



No hay una solicitud pendiente para descargar en whenGET, pero no expectGET (0)

Cuando pruebo un servicio angular usando $ httpBackend obtengo algunos resultados inesperados.

Cuando ejecuto la prueba usando httpBackend.expectGET la prueba funciona como se esperaba. Sin embargo, si ejecuto exactamente la misma prueba con whenGET, la prueba falla con el mensaje ''No hay solicitud pendiente para vaciar''.

Aquí está el servicio bajo prueba:

.factory(''CoverageService'', [''$http'', function ($http) { return{ GetCoverageReport: function () { return $http.get(''../../../js-test-reports/coverage/Chrome 43.0.2357%20(Windows%207)/cobertura-coverage.xml''); },

Aquí están las pruebas:

''use strict''; describe(''coverage-manager.js'', function () { describe(''CoverageService'', function () { var httpBackend, sut, rootScope; beforeEach(module(''fot'')); describe(''GetCoverageReport'', function () { beforeEach(inject(function ($httpBackend, CoverageService, $rootScope) { httpBackend = $httpBackend; sut = CoverageService; rootScope = $rootScope; })); it(''should return data'', function () { var expectedData = { testData: ''some data'' }; var actualData; httpBackend.expectGET(''../../../js-test-reports/coverage/Chrome 43.0.2357%20(Windows%207)/cobertura-coverage.xml'').respond(expectedData); sut.GetCoverageReport() .success(function (response) { actualData = response; }); httpBackend.flush(); expect(actualData).toEqual(expectedData); }); it(''should return data but says No pending request to flush'', function () { var expectedData = { testData: ''some data'' }; var actualData; httpBackend.whenGET(''../../../js-test-reports/coverage/Chrome 43.0.2357%20(Windows%207)/cobertura-coverage.xml'').respond(expectedData); sut.GetCoverageReport() .success(function (response) { actualData = response; }); rootScope.$digest(); httpBackend.flush(); expect(actualData).toEqual(expectedData); }); it(''should return data'', function () { var expectedData = { testData: ''some data'' }; var actualData; httpBackend.whenGET(''../../../js-test-reports/coverage/Chrome 43.0.2357%20(Windows%207)/cobertura-coverage.xml'').respond(expectedData); sut.GetCoverageReport() .success(function (response) { actualData = response; }); httpBackend.flush(); expect(actualData).toEqual(expectedData); }); }); }); });

Los pases expectGET, tanto cuando GetGET falla con el mensaje "No hay solicitud pendiente para purgar". Intenté usar $ rootScope. $ Digest () como vi en algunas publicaciones, sin suerte. Las pruebas son idénticas, excepto el expectGET vs expectedWHEN, ¿así que no estoy seguro de lo que está pasando?

Y aquí está el detalle del error:

Error: No pending request to flush ! at Function.$httpBackend.flush (file:///C:/dev/fot/git/client/src/main/js/bower_components/angular-mocks/angular-mocks.js:1455:34) at Object.<anonymous> (file:///C:/dev/fot/git/client/src/test/javascript/spec/controllers/devTools/CoverageManager.spec.js:78:21) at attemptSync (file:///C:/dev/fot/git/client/src/main/js/node_modules/karma-jasmine/lib/jasmine.js:1510:12) at QueueRunner.run (file:///C:/dev/fot/git/client/src/main/js/node_modules/karma-jasmine/lib/jasmine.js:1498:9) at QueueRunner.execute (file:///C:/dev/fot/git/client/src/main/js/node_modules/karma-jasmine/lib/jasmine.js:1485:10) at Spec.queueRunnerFactory (file:///C:/dev/fot/git/client/src/main/js/node_modules/karma-jasmine/lib/jasmine.js:518:35) at Spec.execute (file:///C:/dev/fot/git/client/src/main/js/node_modules/karma-jasmine/lib/jasmine.js:306:10) at Object.<anonymous> (file:///C:/dev/fot/git/client/src/main/js/node_modules/karma-jasmine/lib/jasmine.js:1708:37) at attemptAsync (file:///C:/dev/fot/git/client/src/main/js/node_modules/karma-jasmine/lib/jasmine.js:1520:12) at QueueRunner.run (file:///C:/dev/fot/git/client/src/main/js/node_modules/karma-jasmine/lib/jasmine.js:1496:16)

  • angular 1.2.28
  • angular-mocks 1.2.28
  • Jasmine 2.0.0