【发布时间】:2015-09-11 03:59:51
【问题描述】:
我在代码中使用 ui-router,下面是我在应用程序中定义状态的方式:
$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.otherwise 相关,因为它使我的代码进入“base.all”而不是“登录”状态。为了证明这一点,我注释掉了 $urlRouterProvider.otherwise 语句,然后我的测试开始通过。
任何想法为什么会发生这种情况?而解决这个问题的方法是什么?
【问题讨论】:
-
请提供有关测试用例和您要测试的代码的更多信息。也许变化来自其他地方。
标签: javascript angularjs unit-testing angular-ui-router