触摸和取消触摸垫输入后是否出现垫错误的单元测试

问题描述 投票:1回答:1

[当我没有触摸输入时,以及在我触摸并取消触摸输入而没有输入任何文本时,如何测试DOM中是否存在mat-error?

我正在使用Jest测试

HTML

<mat-form-field>
  <input matInput formControlName="someInput"/>
  <mat-error id="my_error">* required</mat-error>
</mat-form-field>

Test

it('Should not show error', () => {
  const myEl = fixture.debugElement.query(By.css('#my_error'));

  expect(myEl).toBeUndefined();
});

it('Should show error', () => {
  const myEl = fixture.debugElement.query(By.css('#my_error'));

 // code to touch and untouch the element

  expect(myEl).not.toBeUndefined();
});
html angular typescript unit-testing dom
1个回答
0
投票

也许像:

const input = fixture.debugElement.query(By.css("[formControlName='someInput']"));
const errors = fixture.debugElement.queryAll(By.css("mat-error"));

input.nativeElement.dispatchEvent(new Event("input"));
fixture.detectChanges();

expect(errors.length).toEqual(1);
expect(errors[0].nativeElement.innerHTML.trim()).toMatch("* required");
© www.soinside.com 2019 - 2024. All rights reserved.