Как написать модульные тесты для функции, которая имеет $ state.go() и которая, как ожидается, будет перенаправлена на этот конкретный элемент?
$scope.inviteMembers = (id)=> {
$state.go('invite', {deptId: id});
}
Как написать модульные тесты для функции, которая имеет $ state.go() и которая, как ожидается, будет перенаправлена на этот конкретный элемент?
$scope.inviteMembers = (id)=> {
$state.go('invite', {deptId: id});
}
Поскольку это единичный тест, вам просто нужно убедиться, что функция вызывается, ничего более.
Что-то вдоль этих линий:
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 хорошо протестирован :)
Спасибо @ Jesus. Можете ли вы также изучить этот вопрос ..http: //stackoverflow.com/questions/27740395/cannot-read-property-loadlisting -of-Неопределенные-карма-жасмин – forgottofly
У вас уже есть модульные тесты для остальной части вашего контроллера? – lukewestby
@lukewestby. Нет. Я пишу только для проверки штатов. – forgottofly