我如何在这里模拟超时调用?
$scope.submitRequest = function () {
var formData = getData();
$scope.form = JSON.parse(formData);
$timeout(function () {
$('#submitForm').click();
}, 2000);
};
我想看到使用正确的函数调用超时。
我想要一个模拟 $timeout 的 spyon 函数的例子。
spyOn(someObject,'$timeout')
最佳答案
首先,DOM 操作应该只在指令中执行。
此外,最好使用 angular.element(...),而不是 $(...)。
最后,为此,您可以将元素的单击处理程序暴露给作用域,监视它,并检查该处理程序是否已被调用:
$timeout.flush(2000);
$timeout.verifyNoPendingTasks();
expect(scope.myClickHandler).toHaveBeenCalled();
编辑:
由于这是一个表单并且没有 ng-click 处理程序,您可以使用 ng-submit 处理程序,或向您的表单添加一个名称并执行以下操作:
$timeout.flush(2000);
$timeout.verifyNoPendingTasks();
expect(scope.formName.$submitted).toBeTruthy();
关于angularjs - 如何单元测试/模拟 $timeout 调用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49413643/