Unit testing 使用Angular UI路由器进行Angular JS/Karma单元测试
我正在开发一个Angular应用程序,它使用Angular UI路由器来路由和维护状态。我很难让我的单元测试进行编译。似乎无论我做什么,我总是会得到以下错误:Unit testing 使用Angular UI路由器进行Angular JS/Karma单元测试,unit-testing,angularjs,gruntjs,angular-ui,karma-runner,Unit Testing,Angularjs,Gruntjs,Angular Ui,Karma Runner,我正在开发一个Angular应用程序,它使用Angular UI路由器来路由和维护状态。我很难让我的单元测试进行编译。似乎无论我做什么,我总是会得到以下错误: Error: State '' is not navigable 我在我的应用程序中设置了以下状态,以及以下重定向: app.config(function($stateProvider, $urlRouterProvider) { var paramList = '?beds&lat&lon&zoom';
Error: State '' is not navigable
我在我的应用程序中设置了以下状态,以及以下重定向:
app.config(function($stateProvider, $urlRouterProvider) {
var paramList = '?beds&lat&lon&zoom';
$urlRouterProvider
.when('', '/')
.when('/', '/search')
.when('/search', '/search/list')
.otherwise('');
$stateProvider
.state('search', {
abstract: true,
url: '/search',
templateUrl: 'views/search.html',
controller: 'SearchCtrl'
})
.state('search.list', {
url: '/list' + paramList,
templateUrl: 'views/search-list.html'
})
.state('search.map', {
url: '/map' + paramList,
templateUrl: 'views/search-map.html'
})
.state('search.listing', {
url: '/listing/:id' + paramList,
templateUrl: 'views/search-listing.html'
})
.state('favorites', {
url: '/favorites',
templateUrl: 'views/favorites.html'
})
});
我花了整整一天的时间试图让一个测试生效,但不管我采取什么方法,我总是以同样的错误告终。我有一个e2e测试运行得很好。乍一看,我会说$stateProvider似乎告诉您需要在其中放入一个空状态。将此添加到状态列表中
state( '', { ... } )
ui路由器会自动为
'
添加一个内部状态,因此这就是您得到的错误。我建议为基本状态添加一个“/”
url,并将“否则”调用更改为重定向到“/”而不是“”。由于您的,正在尝试内部”
状态。否则(“”)
调用。因此,不妨尝试一下:
$urlRouterProvider
.when('/', '/search')
.when('/search', '/search/list')
.otherwise('/');
我尝试了这个,现在得到的错误是
uncaughterror:State''已经从app定义了。