【发布时间】:2017-12-08 10:17:51
【问题描述】:
我有这个简单的方法需要测试:
public onLayerContainerClick(event: Event): void {
event.stopPropagation();
event.preventDefault();
if (event.srcElement.classList.contains('dpm-info__layerContainer')) {
this.closeInfoLayer(event);
}
}
我的目标实际上是增加组件的代码覆盖率。如果我测试是这样的:
it( 'should close on info container click', () => {
spyOn( component, 'onLayerContainerClick' );
const el: DebugElement = fixture.debugElement.query( By.css( '.dpm-info__layerContainer' ) );
el.triggerEventHandler( 'click', null );
expect( component.onLayerContainerClick ).toHaveBeenCalled();
} );
测试正常,但 instanbul 显示“功能未涵盖”。所以我想,我需要显式调用该函数?为此,我需要一个完整的事件对象,包括(至少) srcTarget 属性。如何在单元测试中定义这样的事件?
【问题讨论】:
标签: angular jasmine dom-events istanbul angular2-testing