Я пытался протестировать функцию, которая содержит подписку на EventEmitter, модульный тест вызывает подписку, но было невозможно проверить код внутри подписки, я имею в виду filter
и getDocuments()
не тестируются даже при вызове подписки.
describe('trigger_data test', () => {
it('not filter in storage', async(() => {
component.filter = null;
spyOn(component, 'getDocuments');
spyOn(mockSharedService.trigger_data, 'subscribe').and.returnValue(of(true));
component.triggerData();
expect(mockSharedService.trigger_data.subscribe).toHaveBeenCalled();
expect(component.filter).toEqual(1); //Error: Expected null to equal 1.
expect(component.getDocuments).toHaveBeenCalled(); //Error: Expected spy getDocuments to have been called.
}));
});
Это функция
triggerData() {
this.sharedService.trigger_data.subscribe(() => {
if (sessionStorage.getItem('filter_pp') !== null) {
this.filter = Number(sessionStorage.getItem('filter_pp'));
} else {
this.filter = 1;
}
this.getDocuments();
});
}
Когда другой компонент выдает логическое значение, подписка запускает код.