У меня есть функция scope в моем контроллере с некоторыми функциями async. После того, как все сделано, оно меняет состояние.Дождитесь изменения состояния в тесте
controller.js
$scope.test = function() {
async().then(function() {
$state.go('somewhere');
});
};
я мог проверить его с setTimeout()
, но тем грязным я думаю.
Как подождать stateChange в моем тесте?
Edit:
Я хочу писать тесты для функции test()
но это не обещание мне нужно следить за изменением состояния в тесте. Но как? Он работает с setTimeout()
, но я не хочу использовать setTimeout()
, потому что он просто не чувствует себя хорошо. Есть что-то вроде $scope.$watch
для состояний?
test.js
...
it('test()', function (done) {
$scope.test();
setTimeout(function() { // I want this replaced with a listener for state
expect($scope.someVar).to.be.equal('value');
expect($state.current.name).to.be.equal('somewhere');
});
});
...
Ваш вопрос непонятен. Вы хотите знать, как ждать завершения всех ваших асинхронных функций, чтобы вы могли изменить состояние или определить, когда состояние закончилось? –