如果正在使用某个函数,我正在对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并调用函数
答案 0 :(得分:0)
我能够使用DOMelement.nativeElement.dispatchEvent(new Event('input'));
触发更改