我正在为 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')
状态?
答案 0 :(得分:0)
注入$ q,然后尝试$ q.flush();改变状态后。
答案 1 :(得分:0)
花了几个小时后,我最终使用$timeout.flush()
,我猜这是清除所有承诺队列。