我正在尝试使用 Karma 用 Jasmine 测试我的 AngularJS 控制器。但是$timeout
在现实生活中运行良好的 a 会使我的测试崩溃。
控制器:
var Ctrl = function($scope, $timeout) {
$scope.doStuff = function() {
$timeout(function() {
$scope.stuffDone = true;
}, 250);
};
};
Jasmine it 阻塞(其中$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
为真。但在我的测试中,$timeout
什么也没做,函数永远不会执行,并且 Jasmine 在超时 750 毫秒后报告错误。这里可能有什么问题?