Я пытаюсь проверить свой контроллер AngularJS с помощью Jasmine, используя Karma. Но $timeout
, который хорошо работает в реальной жизни, сбрасывает мои тесты.
Контроллер:
var Ctrl = function($scope, $timeout) {
$scope.doStuff = function() {
$timeout(function() {
$scope.stuffDone = true;
}, 250);
};
};
Жасмин он блокирует (где $scope
и контроллер правильно инициализированы):
it('should do stuff', function() {
runs(function() {
$scope.doStuff();
});
waitsFor(function() {
return $scope.stuffDone;
}, 'Stuff should be done', 750);
runs(function() {
expect($scope.stuffDone).toBeTruthy();
});
});
Когда я запустил приложение в браузере, будет выполняться функция $timeout
и $scope.stuffDone
будет true. Но в моих тестах $timeout
ничего не делает, функция никогда не выполняется, и Jasmine сообщает об ошибке после выключения 750 мс. Что здесь может быть неправильно?