2017-08-22 1 views
0

Ich habe ein Feld in einem Formular, das ein Suchfilter ist. Wenn ein Benutzer einen Wert in dieses Suchfeld eingibt, werden neue Ergebnisse abgerufen und die Ansicht ist Filter. Im Folgenden finden Sie das FormularSo testen Sie DebounceTime in Winkel 4 Formular

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

Komponentencode

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) 
      }) 

Das Problem ist, dieser Test immer erfolgreich ist. Egal was der Wert in .toBe() ist. Der Code wartet nicht auf Entprellen. Wie schreibe ich einen Test für Entprellen in Winkel 4

Antwort

0

Sie können die tick Funktion verwenden, um den Ablauf der Zeit zu simulieren.

Tick function Angular.io docs

Platz es vor Ihrer Behauptung und die Zeit gleich Ihre debounce Timer machen.