Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing angular2测试,如何测试绑定到元素的事件_Unit Testing_Angular_Components - Fatal编程技术网

Unit testing angular2测试,如何测试绑定到元素的事件

Unit testing angular2测试,如何测试绑定到元素的事件,unit-testing,angular,components,Unit Testing,Angular,Components,我正在为一个组件编写angular2单元测试。 完全使用JQuery可以找到绑定到元素的事件。然而在安圭拉2,我不确定这是否可能 例如,下面的代码有一个click事件,它是组件的公共函数 <button (click)="doLogin()" [disabled]="myDisabled">Login</button> 我希望通过编写测试来确保将来不会有人删除此事件绑定 总之,我如何知道事件被正确地绑定到DOM元素 编辑: 有没有一种方法可以在不实际单击的情

我正在为一个组件编写angular2单元测试。 完全使用JQuery可以找到绑定到元素的事件。然而在安圭拉2,我不确定这是否可能

例如,下面的代码有一个click事件,它是组件的公共函数

      <button (click)="doLogin()" [disabled]="myDisabled">Login</button>
我希望通过编写测试来确保将来不会有人删除此事件绑定

总之,我如何知道事件被正确地绑定到DOM元素

编辑:
有没有一种方法可以在不实际单击的情况下知道是否存在单击事件?

您可以使用下面的方法(调用
单击

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();
  });
}));
有关更多详细信息,请参见此问题:


为什么不测试内部的函数是否被调用?如果没有,你可以假设有人删除了它。有没有一种方法可以在不单击的情况下知道是否存在单击事件?我可能会错误地询问这种方法,而不是触发单击事件。
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();
  });
}));