我使用Angular作为前端,Python作为后端。我使用服务器发送事件(SSE)将数据从服务器流到UI。一切都运行良好,但我无法在angular中为相同的内容编写单元测试。
abc.组件.ts
streamMessages() {
this.isPaused = false;
this.messages = [];
const url = this.urlConfig.stream;
var eventSource = new EventSource(url);
eventSource.addEventListener('message', (e) => {
this.messages.push(e.data);
});
eventSource.addEventListener('error', (e) => {
eventSource.close();
console.log('ERROR!');
this.isPaused = true;
});
eventSource.addEventListener('close', () => {
eventSource.close();
console.log('CLOSED!');
});
}
abc.组件规格ts
describe('#streamMessages', () => {
let mockEventSource: jasmine.SpyObj<EventSource>;
beforeEach(() => {
mockEventSource = jasmine.createSpyObj('EventSource', ['addEventListener']);
});
it('should push new message when new message is received', () => {
mockEventSource.addEventListener.and.callFake((type: string, event: any) => {
console.log(type, event)
});
component.streamMessages();
expect(component.messages.length).toBeGreaterThan(0);
});
});
我需要为所有这三个场景编写单元测试。
任何线索都将是一个很大的帮助。提前感谢!
附言:我不想使用测试台,我需要在噶玛茉莉的帮助下完成这个。
1条答案
按热度按时间yzuktlbb1#
我找到了解决办法。
我改了这一行:
改为:
并使用
eventSourc
的dispatchEvent
方法来发出如下事件:同样,我对其他2个事件也做了同样的操作,并且对它进行了单元测试,同时也覆盖了行。