Javascript 否则,在$urlRouterProvider上,当它不应该';单元测试中的t
我在代码中使用ui路由器,下面是我在应用程序中定义状态的方式:Javascript 否则,在$urlRouterProvider上,当它不应该';单元测试中的t,javascript,angularjs,unit-testing,angular-ui-router,Javascript,Angularjs,Unit Testing,Angular Ui Router,我在代码中使用ui路由器,下面是我在应用程序中定义状态的方式: $stateProvider .state('base', { url: '/', templateUrl: '../views/base.html', controller: 'BaseCtrl' }) .state('login', { url: '/login',
$stateProvider
.state('base', {
url: '/',
templateUrl: '../views/base.html',
controller: 'BaseCtrl'
})
.state('login', {
url: '/login',
templateUrl: 'views/login.html',
controller: 'LoginCtrl'
})
.state('base.all', {
url: '^/home',
templateUrl: '../views/all.html',
controller: 'AllCtrl'
});
$urlRouterProvider.otherwise('/home');
我正在对执行此操作的代码进行单元测试:
$state.transitionTo('login');
在我的茉莉花测试中,我检查:
expect($state.current.name).toEqual('login');
不幸的是,这最终导致测试失败,并显示以下消息:
Expected 'base.all' to equal 'login'.
我发现问题肯定与$urlRouterProvider有关。否则,我的代码将进入“base.all”而不是“login”状态。为了证明这一点,我注释掉了$urlRouterProvider.OVERSIES语句,然后我的测试开始通过
你知道为什么会这样吗?解决这个问题的方法是什么?能否将transitiono()调用替换为go()调用
根据,除非您有特殊需要,否则您应该使用go()请提供有关测试用例和要测试的代码的更多信息。也许改变来自其他地方。我做了,但不幸的是,这没有帮助。