如何在角度单元测试中测试文档点击

spl*_*tor 1 testing angular

我们有一个下拉组件,该组件的下拉菜单在任何外部点击时都会折叠。这实现为:

  @HostListener('document:click', ['$event'])
  public documentClick(event) {
    if (this.dropdownIsOpen && !event.clickedFromMe) {
      this.dropdownIsOpen = false;
    }
  }
Run Code Online (Sandbox Code Playgroud)

如何测试此代码?使用时TestBed.createComponent,似乎只创建了该组件,而该组件不在任何文档中,那么如何模拟该组件外部的单击?

Cor*_*elC 7

用途document.dispatchEvent

 it('should handle document click', () => {
    component.dropdownIsOpen = true;
    document.dispatchEvent(new MouseEvent('click'));
    expect(component.dropdownIsOpen).toBe(false);
  });
Run Code Online (Sandbox Code Playgroud)