我一直在尝试测试包含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();
});
}
[当另一个组件发出布尔值时,订阅触发代码。
而不是监视subscribe方法,而是监视trigger_data。希望它能工作。