Angular: как заставить EventEmitter гриппа sh в тесте - PullRequest
0 голосов
/ 30 января 2020

У меня следующий Angular тест:

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?
    }));

Я не могу грипп sh eventEmitter2, и тест не проходит . Как мне сделать sh EventEmmiter.emit() в тесте?

Примечание. Это упрощенная версия моего теста, в которой используется async труба из Angular, которая использует EventEmitter для внутреннего использования.

"@angular/core": "^8.2.14"

enter image description here

1 Ответ

1 голос
/ 30 января 2020

Место eventEmitter2.emit('B'); после eventEmitter2.subscribe(v => b = v);

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

Поскольку EventEmitter является расширением Subject. Он не будет публиковать sh предыдущих событий для новых подписчиков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...