хотел имитировать EventSource, используя jest, но продолжал бросать ReferenceError: EventSource is not defined
.
Пожалуйста, посмотрите на код. Большое спасибо!
// eventSourceHandler.ts
export default new class A() {
listenEventSource(){
const eventSource = new EventSource(url);
eventSource.addEventListener("something", callSomething);
eventSource.onerror = function() {
console.error();
("Failed to listen EventSource");
};
}
}
Вот тестовый код, который я хочу смоделировать
// eventSourceHandler.spec.ts
import A from "./eventSourceHandler"
describe("xyz",() =>{
it("eventSourceHandler called", ()=> {
const mEventSourceInstance = {
addEventListener: jest.fn(),
onerror: jest.fn(),
close: jest.fn(),
onmessage: jest.fn(),
onopen: jest.fn(),
url: "test-url",
readyState: 0,
withCredentials: false,
CLOSED: 2,
CONNECTING: 0,
OPEN: 1,
removeEventListener: jest.fn(),
dispatchEvent: jest.fn()
};
jest.mock("EventSource", () => {
return {
EventSource: jest.fn().mockImplementation(() => {
return {
// addEventListener: jest.fn(),
// onerror: jest.fn()
mEventSourceInstance
};
})
};
});
let a = new A()
a.listenEventSource();
// test validation ....
});
});
});
...
Получал ReferenceError: EventSource is not defined
при каждом запуске тестового кода.
ПРИМЕЧАНИЕ : Я прочитал почти все связанные посты из stackoverflow и пытался насмехаться global.EventSource
, но Typescript продолжал выдавать ошибку, говоря: EventSource does not exist on type Global
.
Есть ли кто-нибудь, кто хочет поделиться лучшей стратегией насмешки для этого ? Это будет высоко оценено.
Спасибо, парень ...