茉莉花单元测试:ngModelChange是否调用函数

时间:2019-09-26 15:18:19

标签: javascript angular typescript unit-testing

如果正在使用某个函数,我正在对ngModelChange进行角度应用程序的单元测试,因为我正在测试此函数内部发生的某些逻辑。但是,如果不调用此函数,我的测试将无法进行监视!!!

** component.spec.js **

it('should auto compute something', ()=>{
 component.record = "123";
 let spyOnDaemonChange = spyOn(component,'func1').and.callThrough();
 fixture.detectChanges();
 let daemonDOM = fixture.debugElement.query(By.css('#domelement'));
 daemonDOM.nativeElement.value ="123";
 fixture.detectChanges();
 expect(spyOnDaemonChange).toHaveBeenCalled(); //fails
})

component.ts

func1(){
 if(this.record == "abc"){
   this.num = 88;
 } else {
    this.num = 78; 
   }
}

**component.html**
 <td>
   <input style="width:300px;" id="domelement" type="text" class="form-control" [(ngModel)]="record" (ngModelChange) ="func1" name="record" required>
 </td>

component.record =“ 123”或daemonDOM.nativeElement.value =“ 123”;是相同的。这一定是触发了ngModelChange并调用了函数,对吗?

我希望测试检测ngModelChange并调用函数

1 个答案:

答案 0 :(得分:0)

我能够使用DOMelement.nativeElement.dispatchEvent(new Event('input'));

触发更改