具有无效路由的单元测试ui-router

时间:2014-06-06 18:53:33

标签: angularjs unit-testing angular-ui-router

使用这个有用的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?或者应该返回/

1 个答案:

答案 0 :(得分:0)

你的

$urlRouterProvider.otherwise '/'

确实让它返回/

您要么通过收听$ rootScope广播$ stateChangeError来处理无效的网址,并将您的默认值移至/

$rootScope.$on('$stateChangeError', function(){})

OR

使用默认为/ with:

$urlRouterProvider.otherwise '/'

我认为你不能同时兼得。