2017-01-03 15 views
13

Tôi đang cố gắng tạo gói ủy quyền cho dự án của tôi. Tôi nhận được lỗi 'chuyển tiếp thay thế' trong các bài kiểm tra đơn vị của tôi, và tôi không thể tìm ra nơi mà thực sự sẽ được.AngularJS và UI-Router: 'Lỗi: chuyển tiếp thay thế' trong các thử nghiệm đơn vị góc cạnh

Đơn vị kiểm tra:

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"); 
      }); 
     }); 
    }); 

}); 

dịch vụ:

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; 
} 

Lỗi:

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 

tôi giả sử nó là một vấn đề ui-Router, nhưng tôi không thể tìm ra cách nó nên làm việc nếu tôi làm sai.

Trả lời

29

tôi đã cùng một vấn đề sau khi cập nhật góc từ 1.5.9 lên phiên bản 1.6.1 và có thể giải quyết nó bằng cách cập nhật các phụ thuộc với:

npm update angular-ui-router 

Các phiên bản cũ 0.3.1 dẫn đến lỗi này, với phiên bản cập nhật 0.3.2 ứng dụng của tôi hoạt động tốt trở lại (bây giờ với góc 1.6.1).

+0

Cảm ơn, điều này đã giải quyết được cho tôi. – aoakeson

+0

Điều này làm việc cho tôi trước đó, khi thử nó cho một ứng dụng khác nhau đó là nt working.errors vẫn được nhìn thấy – user168983

+0

Việc nâng cấp ui-router đã khắc phục sự cố. Chúc mừng! – Sairam

22

Khi cập nhật để góc 1.6.1 đó là thông điệp, nhưng nâng cấp các ui-router để 0.3.2 khắc phục vấn đề

+0

0.4.2 phù hợp với tôi – Lola

6

Đây có thể là một lỗi với logic định tuyến của bạn. Nếu không, hãy thử thêm số này vào app.config();

$qProvider.errorOnUnhandledRejections(false)

+1

Điều này phù hợp với tôi. Tôi cập nhật angularjs lên phiên bản 1.6.4 và bắt đầu nhận được lỗi "chuyển tiếp thay thế". Sau đó, tôi cập nhật ui-router thành phiên bản 0.3.1 và tôi vẫn gặp lỗi. Sau đó, thêm $ qProvider.errorOnUnhandledRejections (false) vào app.config của tôi ([$ qProvider] ... và bây giờ tôi không nhận được bất kỳ lỗi nào. Tuy nhiên, câu hỏi vẫn còn, ** việc này có khắc phục được sự cố không? * * Cảm ơn @Cengkuru Michael –

Các vấn đề liên quan