使用这个有用的post为ui-router添加单元测试,我添加了以下测试:
describe 'State: myApp', ->
# load the filter's module
beforeEach module 'myApp'
$rootScope = $state = {}
beforeEach inject ['$rootScope', '$state', (_$rootScope_, _$state_) ->
$rootScope = _$rootScope_
$state = _$state_
]
此测试成功,因为访问home
状态会导致点击/
网址。
it "should return the '/' url for the 'home' state", ->
expect($state.href('home')).toEqual '/'
但是,当我测试无效路线时,我得到null
。测试成功:
it "should return the '/' url if a URL cannot be constructed", ->
expect($state.href('FOO_BAR_BAZ')).toEqual null
考虑这些docs:
注意:如果不能构造有效的URL,则返回null。
但是,我的应用包含以下代码,用于将无效状态重新路由到/
:
$urlRouterProvider.otherwise '/'
因此,此测试是否仍会返回null
?或者应该返回/
?
答案 0 :(得分:0)
你的
$urlRouterProvider.otherwise '/'
确实让它返回/
您要么通过收听$ rootScope广播$ stateChangeError来处理无效的网址,并将您的默认值移至/
:
$rootScope.$on('$stateChangeError', function(){})
OR
使用默认为/ with:
$urlRouterProvider.otherwise '/'
我认为你不能同时兼得。