UI-Router在使用$ state.go()时不改变状态

时间:2014-06-18 16:58:50

标签: javascript angularjs unit-testing jasmine angular-ui-router

我正在为 ui-router 路由编写单元测试。但是,我无法通过。

这是我的测试,而$state.current.name正在给我frontpage这是otherwise州。

it('should change state to items', function() {
    $state.go('items');

    $rootScope.$digest();

    expect($state.current.name).toBe('items');
})

州:

$urlRouterProvider.otherwise("/");

$stateProvider
    .state('items', {
        url: '/items',
        templateUrl: 'js/modules/items/partials/items.html',
        controller: 'ItemsController',

        resolve: {
            items : ['ItemService', '$q', function(ItemService, $q) {

                var defer = $q.defer();

                ItemService.getItems().success(function(data) {

                    defer.resolve(data);

                });

                return defer.promise;
            }]
        }

    })

    .state('frontpage', {
        url: '/',
        template: 'Frontpage'
    })

调用frontpage后,为什么我会收到$state.go('items')状态?

2 个答案:

答案 0 :(得分:0)

注入$ q,然后尝试$ q.flush();改变状态后。

答案 1 :(得分:0)

花了几个小时后,我最终使用$timeout.flush(),我猜这是清除所有承诺队列。