angular2测试,如何测试事件绑定到一个元素

时间:2016-03-16 14:52:28

标签: unit-testing angular components

我正在为组件编写angular2单元测试。 通过完全使用JQuery,可以找到绑定到元素的事件。但是在Angular2中,我不确定它是否可能

例如,以下代码具有click事件,该事件是组件的公共函数

      <button (click)="doLogin()" [disabled]="myDisabled">Login</button>

通过读取DOM元素,我可以通过运行测试来确保所有属性和数据绑定都是正确的。只有我不知道的是,“event绑定是否正确”,因为生成的html如下所示

      <button>Login</button>

我想通过为它编写测试来确保将来不会删除此事件绑定。

总之,我如何知道事件是否正确绑定到DOM元素?

编辑: 有没有办法知道有点击事件而没有实际点击它?

1 个答案:

答案 0 :(得分:2)

您可以使用以下方法(调用click

it('should render list', injectAsync([TestComponentBuilder], (tcb: TestComponentBuilder) => {
  return tcb.createAsync(MyList).then((componentFixture: ComponentFixture) => {
    const element = componentFixture.nativeElement;
    componentFixture.detectChanges();
    expect(element.querySelectorAll('li').length).toBe(5);
    document.getElementById('test').click();
  });
}));

有关详细信息,请参阅此问题: