2014-12-31 2 views
6

Как написать модульные тесты для функции, которая имеет $ state.go() и которая, как ожидается, будет перенаправлена ​​на этот конкретный элемент?

  $scope.inviteMembers = (id)=> { 
       $state.go('invite', {deptId: id}); 
       } 
+0

У вас уже есть модульные тесты для остальной части вашего контроллера? – lukewestby

+0

@lukewestby. Нет. Я пишу только для проверки штатов. – forgottofly

ответ

15

Поскольку это единичный тест, вам просто нужно убедиться, что функция вызывается, ничего более.

Что-то вдоль этих линий:

it('should move to the invite page after inviting someone', function() { 
    spyOn($state, 'go'); 

    $scope.inviteMembers(1); 

    expect($state.go).toHaveBeenCalledWith('invite', {deptId: 1}); 
}); 

Таким образом, основная идея здесь, чтобы шпионить за go методом $state и когда мы вызываем метод, нам просто нужно проверить, что метод $state.go были названы и с какими параметрами.

Прежде чем вы меня спросите ... Да, но я хочу быть уверенным, что государство тоже изменится. Ну, тебе не нужно это делать.

Это единичный тест, это означает, что ваша единственная проблема заключается в проверке этого контроллера и ничего другого, и его ответственность заканчивается тем, что просто вызывает этот метод. Что происходит после этого - это кто-то другой, в этом случае ui-router, и я уверен, что ui-router хорошо протестирован :)

+0

Спасибо @ Jesus. Можете ли вы также изучить этот вопрос ..http: //stackoverflow.com/questions/27740395/cannot-read-property-loadlisting -of-Неопределенные-карма-жасмин – forgottofly

Смежные вопросы