我正在尝试为我编写的限制输入框字符的工具编写单元测试。该方法接收键盘事件并确定哪个 event.code 已被触发,然后返回 true 或 event.preventDefault()。这很好用,但我无法在 jasmine / karma 中测试它。
当前来自模板的输入
<input [(ngModel)]="donationValue" formControlName="donationAmount"
type="tel" class="donation-amount" (keydown)="checkCharacter($event)"
placeholder="Enter Amount..."/>
这是我的当前测试:
这里是我的目前的测试
。it('should return have defaultPrevented as true', fakeAsync(() => {
const goalInput =
fixture.debugElement.query(By.css('input.donation-
amount')).nativeElement;
const keyEventData = { isTrusted: true, code: 'KeyA' };
const keyEvent = new KeyboardEvent('keydown', keyEventData);
goalInput.dispatchEvent(keyEvent);
tick();
fixture.detectChanges();
expect(keyEvent.defaultPrevented).toBe(true);
}));
我有其他测试已经监视了这些方法并且它们已被触发。我的怀疑是isTrusted属性被设置为false,即使我试图将其设置为true.