停止事件的传播在角度2+单元测试中不起作用

时间:2017-09-12 10:05:06

标签: angular unit-testing events jasmine stoppropagation

我正在尝试为使用事件传播停止的Angular 4编写单元测试。

这是一个简单的场景 - 我们注册3个侦听器并在第一个侦听器中调用event.stopImmediatePropagation()。然后我们发起一个事件,并期望最后两个听众不被调用。但他们被称为。

describe('Events Testing Demo', () => {
  let count = 0;

  it('should test listeners', () => {
    document.body.addEventListener('click', (event: MouseEvent) => {
      event.stopImmediatePropagation();
      console.log('listener 1 running');
      count++;
      event.stopImmediatePropagation();
    });

    document.body.addEventListener('click', (event: MouseEvent) => {
      console.log('listener 2 running');
      count++;
    });

    document.body.addEventListener('click', (event: MouseEvent) => {
      console.log('listener 3 running');
      count++;
    });

    document.body.dispatchEvent(new Event('click'));

    expect(count).toEqual(1); // because of event.stopImmediatePropagation() in the 1st listener
  });
});

这个描述块可以添加到任何" hello world"由Angular CLI生成的应用程序,以便查看它的实际效果。

但是在Jasmine Standalone测试中一切正常(直接在浏览器中,没有Angular),因此它似乎是Angular特定的问题。

或者这可能不是在Angular中测试DOM事件的正确方法吗?

0 个答案:

没有答案