我如何在这里模拟超时调用?

$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/

10-17 02:45