AngularJS和UI-Router:在angularjs单元测试期间'错误:转换被取代' [英] AngularJS and UI-Router: 'Error: transition superseded' during angularjs unit tests

查看:71
本文介绍了AngularJS和UI-Router:在angularjs单元测试期间'错误:转换被取代'的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试为我的项目创建授权包。我在单元测试期间收到错误'转换被取代',我无法找到实际上的位置。

I'm attempting to create an authorization package for a project of mine. I'm getting the error 'transition superseded' during my unit tests, and I can't find out where that would actually be.

单元测试:

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

});

服务:

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

错误:

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

我认为这是一个ui-Router问题,但如果我做错了,我无法弄清楚它应该如何工作。

I assume it's a ui-Router problem, but I can't figure out how it should work if I am doing it wrong.

推荐答案

更新角度从1.5.9到版本1.6.1之后我遇到了同样的问题,可以通过更新依赖项来解决它:

I had the same issue after update angular from 1.5.9 to version 1.6.1 and could solved it by update the dependencies with:

npm update angular-ui-router

旧版本0.3.1导致错误,使用更新版本0.3.2我的应用程序再次正常工作(现在角度为1.6.1)。

The old version 0.3.1 leads to the error, with the updated version 0.3.2 my app works fine again (now with angular 1.6.1).

这篇关于AngularJS和UI-Router:在angularjs单元测试期间'错误:转换被取代'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆