0

我在为 Angular 指令创建单元测试时遇到问题。问题是在设置 inputEl.value 并调用 input.dispatchEvent(new Event('input')) 然后调用 fixture.detectChanges() 之后,输入值被删除并且将是一个空字符串(所以总而言之我什至没有得到在那里测试指令)。

这是我的代码:

@Component({
  template: `
  <form [formGroup]="formGroup">
    <input formControlName="datepicker">
  </form>`
})
class TestComponent implements OnInit {
  formGroup!: FormGroup;

  constructor(private readonly formBuilder: FormBuilder) { }

  ngOnInit() {
    this.initForm();
  }

  initForm() {
    this.formGroup = this.formBuilder.group({
      datepicker: ['']
    })
  }
}


...
  beforeEach(() => {
    fixture = TestBed.createComponent(TestComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();
  })

it('should add 23:59:59 sec to the initial date', async () => {
    component.ngOnInit();
    fixture.detectChanges();

    const debugEl: HTMLElement = fixture.debugElement.nativeElement;
    const inputEl: HTMLInputElement | null = debugEl.querySelector('input');
    const value = 'test';

    if(inputEl) {
      inputEl.value = value;
      inputEl.dispatchEvent(new Event('input'));
      fixture.detectChanges();
      expect(inputEl.value).toBe(value);
    }
});

结果:错误:预期“”为“测试”。

我在这里做错了什么?

4

0 回答 0