как я могу проверить, была ли вызвана определенная функция внутри блока подписки наблюдаемой?
Сценарий следующий:
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'})], но он никогда не вызывался.
Есть ли какие-либо советы или рекомендации?Спасибо