作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我如何在这里模拟超时调用?
$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/
我是一名优秀的程序员,十分优秀!