0

我有以下角度测试:

it('should pass', fakeAsync(() => {
      let a;
      const eventEmitter1 = of('A');
      eventEmitter1.subscribe(v => a = v);

      let b;
      const eventEmitter2 = new EventEmitter();
      eventEmitter2.emit('B');
      eventEmitter2.subscribe(v => b = v);

      tick();
      flush();

      console.log(a); // Outputs A
      console.log(b); // outputs undefined

      expect(a).toBe('A');
      expect(b).toBe('B'); // How to make the test to pass here?
    }));

我无法刷新eventEmitter2和测试失败。如何EventEmmiter.emit()在测试中刷新?

注意:这是我的测试的简化版本,它使用内部使用async的 Angular 管道。EventEmitter

"@angular/core": "^8.2.14"

在此处输入图像描述

4

1 回答 1

1

放置eventEmitter2.emit('B');在之后eventEmitter2.subscribe(v => b = v);

eventEmitter2.subscribe(v => b = v);
eventEmitter2.emit('B');

作为. EventEmitter_ Subject它不会将以前的事件发布给新订阅者。

于 2020-01-30T15:25:21.347 回答