unitario unit test e2e component javascript angularjs unit-testing angular-ui-router

javascript - unit - testing angular 7



AngularJS y UI-Router: ''Error: transiciĆ³n sustituida'' durante las pruebas unitarias de angularjs (3)

Estoy intentando crear un paquete de autorización para un proyecto mío. Recibo el error "transición superada" durante mis pruebas de unidad, y no puedo averiguar dónde sería realmente eso.

Prueba de unidad:

import angular from ''angular''; import ''angular-mocks''; import worldManagerApp from ''../../src/world-manager-app''; import security from ''../../src/security/security''; const {inject, module} = angular.mock; describe(''LoginService'', ()=> { let $httpBackend; let $rootScope; let successHandler; let errorHandler; let LoginService; const USER = {username: "TEST", password: "PASSWORD"}; beforeEach(function() { module(worldManagerApp); module(security); }); beforeEach(inject((_$httpBackend_, _LoginService_, _$rootScope_) => { $httpBackend = _$httpBackend_; $rootScope = _$rootScope_; LoginService = _LoginService_; successHandler = jasmine.createSpy(''successHandler''); errorHandler = jasmine.createSpy(''errorHandler''); })); it(''should exist'', () => { expect(LoginService).toBeDefined(); }); describe(''.login()'', () => { describe(''when given a proper username and password'', () => { it(''should return the username and success'', () => { $httpBackend.expectPOST(''/login'').respond(200, {user: USER}); LoginService.login("TEST", "PASSWORD"); $rootScope.$digest(); $httpBackend.flush(); expect($rootScope.currentUser).toEqual("TEST"); }); }); }); });

Servicio:

export default function LoginService($http){ ''ngInject''; let service = {}; service.login = login; function login(username, password){ $http({ url:''/login'', method: ''POST'', data: { username: username, password: password, }, }).then (function(response) { response.username; }).catch(function(response){ }); } return service; }

Error:

PhantomJS 1.9.8 (Windows 8 0.0.0) LoginService .login() when given a proper username and password should return the username and success FAILED Error: transition superseded at C:/Users/Manifest/AppData/Local/Temp/353229d8bf0abe298e7003bab30c0528.browserify:9387 <- node_modules/angular-mocks/angular-mocks.js:261:0 at processChecks (C:/Users/Manifest/AppData/Local/Temp/353229d8bf0abe298e7003bab30c0528.browserify:33750 <- node_modules/angular/angular.js:16674:0) at C:/Users/Manifest/AppData/Local/Temp/353229d8bf0abe298e7003bab30c0528.browserify:35048 <- node_modules/angular/angular.js:17972:0 at C:/Users/Manifest/AppData/Local/Temp/353229d8bf0abe298e7003bab30c0528.browserify:34862 <- node_modules/angular/angular.js:17786:0 at C:/Users/Manifest/AppData/Local/Temp/353229d8bf0abe298e7003bab30c0528.browserify:521 <- frontend/test/security/loginService.spec.js:42:15

Supongo que es un problema de ui-Router, pero no puedo entender cómo debería funcionar si lo estoy haciendo mal.


Cuando se actualiza a angular 1.6.1, ese es el mensaje, pero actualizar el ui-router a 0.3.2 soluciona el problema


Esto podría ser un error con su lógica de enrutamiento. Si no es así, intente agregar esto a su app.config () ;

$qProvider.errorOnUnhandledRejections(false)


Tuve el mismo problema después de la actualización angular de 1.5.9 a la versión 1.6.1 y pude resolverlo actualizando las dependencias con:

npm update angular-ui-router

La versión anterior 0.3.1 lleva al error, con la versión actualizada 0.3.2 mi aplicación funciona bien de nuevo (ahora con angular 1.6.1).