Это мой код продукции:Тест UI-маршрутизатор и stateChangeStart
myApp.run ($rootScope, $location, AuthService, $state) ->
$rootScope.$on '$stateChangeStart', (event, toState, toParams, fromState, fromParams) ->
$rootScope.stateChangeStarthasBeenCalled = true
if toState.authenticate is true
$rootScope.authNecessaryButNotProvided = true
Часть моего Мой маршрутизатор, где я установил authenticate
плоский
.state('auth.profile',
url : 'someURL'
templateUrl : 'some.html'
controller : 'AuthController'
authenticate: true
)
Я проверить так:
it 'should have stateChangeStarthasBeenCalled defined', ->
mockRootScope.$broadcast("$stateChangeStart", "event", "toState:auth.profile", "toParams", "fromState", "fromParams")
expect(mockRootScope.stateChangeStarthasBeenCalled).toBeTruthy()
it 'should have authNecessaryButNotProvided defined', ->
mockRootScope.$broadcast("$stateChangeStart", "event", "toState:auth.profile", "toParams", "fromState", "fromParams")
expect(mockRootScope.authNecessaryButNotProvided).toBeTruthy()
Я хочу проверить объект toState
, например toState.authenticate
, который я определил в своих маршрутах.
Итак, как необходимое условие, как сообщить stateChangeStart
состояние, на которое мы переходим?
В производственном коде работает, как и ожидалось, в тесте нет.
Редактировать: Не работает! tostate.authenticate не оценивает «истину» в моем случае. Любая идея, как получить доступ к 'toState.authenticate' изнутри теста? '$ rootScope.toState.authenticate' или' $ state.toState.authenticate' является 'undefined'. Кроме того, я не совсем доволен этим solutino, так как я хотел бы проверить настройку 'authenticate' ui-router, вместо этого переопределяя его' $ broadcast'. – nottinhill
Я создал плункер для этого решения здесь: http://plnkr.co/edit/WvlFQJkBWQLnQvDZrJwX?p=preview –
Я не уверен, зачем вам нужно исходное значение свойства authenticate из конфигурации маршрутизатора, когда идея (я полагаю), чтобы проверить, как обработчик событий работает в разных обстоятельствах, вручную указывая разные параметры. Или вы хотите проверить, какое значение определено конфигурацией ui-router? –