【发布时间】:2018-09-07 14:02:57
【问题描述】:
在我的 Angular 应用程序中,我有两个可点击的 div,其中一个是另一个的子级。当子div被点击时,我不希望父点击事件被触发,所以我在点击事件上使用了stopPropagation()。这是我正在做的简化版本:
<div id="parent" (click)="parentClick($event)">
Parent
<div id="child" (click)="childClick($event)">
Child
</div>
</div>
childClick 的第一行是event.stopPropagation();
这里没问题,一切都按预期进行。您可以查看the code and demo here
但是,当我尝试进行单击子 div 的茉莉花测试时,茉莉花会超时。茉莉花似乎出于某种原因冻结了。单元测试如下所示:
it(`Clicking child doesn't trigger parent`, () => {
let childDe = fixture.debugElement.query(By.css('#child'));
childDe.triggerEventHandler('click', { button: 0 });
fixture.detectChanges();
expect(component.lastClicked).toBe('child');
});
当我运行它时,jasmine 会加载很长时间并输出以下消息:
Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
如果有人知道如何在 stackblitz 中创建 jasmine 单元测试,请告诉我,我会添加它。
【问题讨论】:
标签: javascript angular typescript jasmine angular6