gpt4 book ai didi

angularjs - 如何对 $timeout 调用进行单元测试/模拟?

转载 作者:行者123 更新时间:2023-12-02 10:20:12 24 4
gpt4 key购买 nike

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

$scope.submitRequest = function () {

var formData = getData();

$scope.form = JSON.parse(formData);

$timeout(function () {
$('#submitForm').click();
}, 2000);

};

我想查看是否已使用正确的函数调用了超时。

我想要一个 spy 函数模拟 $timeout 的示例。

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com