如何以角4形式测试debounceTime

时间:2017-08-22 19:18:48

标签: angular

我在表单上有一个字段,它是一个搜索过滤器。当用户在该搜索字段中输入值时,将获取新结果并且视图将被过滤。以下是表格

<form [formGroup]="form" >
<span>Enter State:</span><input id="txtState" formControlName="stateControl"  type="text" />
<div>// data<div>
</form>

组件代码

 const stateCtrl=this.form.get("stateControl");
stateCtrl.valueChanges.debounceTime(2000).subscribe((data)=>//serviceCall)

test.ts

 let state=component.form.controls["stateControl"];
      state.setValue("Texas");

      fixture.detectChanges();
            fixture.whenStable()
            .then(()=>
            {
              fixture.detectChanges();
              expect(component.customers.length).toBe(5)
            })

问题是,这个测试总是成功的。无论.toBe()中的值是多少。代码不等待去抖。如何在角度4中编写去抖动测试

1 个答案:

答案 0 :(得分:0)

您可以使用tick功能模拟时间的推移。

Tick function Angular.io docs

在你的断言之前放置它并使时间等于你的去抖定时器。