我正在嘗試測驗 mat-form-field 輸入中的值變化。我研究了幾種解決方案,但我無法讓它發揮作用。實際的期望結果是:“ Expected '' to equal 'Open Travel'。 ”該值正確存盤在本機元素中,但不是在 component.name 中。我真的希望有人有解決方案。我已經在這上面浪費了很多時間。
這是我的測驗:
fit('some test definition', () => {
fixture.whenStable().then(() => {
expect(component.name).toEqual('');
let inputName = fixture.debugElement.nativeElement.querySelector('#name');
inputName.focus();
inputName.value = 'Open Travel';
inputName.dispatchEvent(new Event('input'));
expect(component.name).toEqual('Open Travel');
});
});
來自html的片段:
<mat-form-field appearance="fill">
<mat-label>Project Name</mat-label>
<input id="name" [(ngModel)]="name" matInput>
</mat-form-field>
uj5u.com熱心網友回復:
直接設定輸入時不會觸發 ngModelChange 事件,使用 triggerEventHandler 方法發出 ngModelChange 事件應該設定組件變數,不確定這是否是最好的方法,但它會起作用
fit('some test definition', () => {
expect(component.name).toEqual('');
let inputName = fixture.debugElement.query(By.css('#name'));
inputName.nativeElement.focus();
inputName.nativeElement.value = 'Open Travel';
inputName.triggerEventHandler('ngModelChange', 'Open Travel');
expect(component.name).toEqual('Open Travel');
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/523255.html
