gpt4 book ai didi

javascript - 如何在 AngularJS 中使用 ng-model-options 的去抖强制触发输入更改?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:45:09 25 4
gpt4 key购买 nike

我正在测试我的图书馆。问题是我在文本字段中进行了去抖动以避免经常更新。

喜欢

<input ... ng-model-options="{debounce: {'default': 500, 'blur': 0} }"

但我无法在测试中禁用它,即使我尝试触发 blur

it("""test input set with debounce""", function(){
scope.obj = {
name: 'John'
}
el = compileTemplate("<span><input ng-model=\"obj.name\" ng-model-options=\"{debounce: {'default': 500, 'blur': 0} }\"></input></span>")
scope.$digest()
input = el.find('input');
expect(input.val()).toEqual('John');
angular.element(input).val('Max').trigger('change').trigger('blur')
scope.$apply()
expect(scope.obj.name).toEqual('Max');
})

它会失败,因为我必须添加 $timeout。所以 10 次测试 = 5 秒的延迟是不合适的。

我如何强制更改触发器以避免去抖或触发模糊

最佳答案

模拟的 $timeout 服务有一个 flush 方法,你可以用它来触发单元测试中的更新。

it('should set with debounce', inject(function ($timeout) {
input.val('Max').triggerHandler('input');
$timeout.flush();
expect(scope.obj.name).toEqual('Max');
}));

关于javascript - 如何在 AngularJS 中使用 ng-model-options 的去抖强制触发输入更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29904198/

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