Вызов шпионской функции в обратном вызове подписки - угловой тест - PullRequest
0 голосов
/ 08 октября 2018

как я могу проверить, была ли вызвана определенная функция внутри блока подписки наблюдаемой?

Сценарий следующий:

private openMemberPopup(): void {
    this.memberDialogRef = this.dialogRef.open(MemberPopupComponent, { width: '800px' });
    this.memberDialogRef.componentInstance.onMemberAdded.subscribe(member => {
      this.store.dispatch(new CreateMemberAction({ member })); <-- this line should be tested
    });
  }

Я хотел бы проверить описанный выше метод, который открывает диалоговое окно материала.Затем я подписываюсь на EventEmitter компонента Popup.В следующем обратном вызове я отправляю новое действие NGRX.

Следующий подход не работает:

it('should dispatch CreateMemberAction', async () => {
      const dialogRef = component.dialogRef;

      // tslint:disable-next-line:no-object-literal-type-assertion
      const member = {} as Member;
      const spyOnRef = spyOn(dialogRef, 'open').and.returnValue({
        componentInstance: {
          onMemberAdded: hot('-a-|', { a: member })
        }
      });

      const store = TestBed.get(Store);
      const spy = spyOn(store, 'dispatch');
      const expected = new CreateMemberAction({ member });

      component['openAddMemberPopup']();

      expect(spy).toHaveBeenCalledWith(expected);
    });

Сообщение об ошибке:

Ожидаемая отправка шпиона была вызвана с помощью [CreateMemberAction ({payload: Object)({member: Object ({})}), введите: '[Member] Create Member'})], но он никогда не вызывался.

Есть ли какие-либо советы или рекомендации?Спасибо

...