我正在尝试使用jest模拟arcgis js库中的事件处理程序,但是在获取对处理程序的引用和触发回调函数时遇到了问题。我决定使用node内置的events
模块来模拟事件处理程序,但是当我触发事件时,回调函数从未被执行。
foo.ts
createSomething(
onComplete: fooCompleteCallback
): void {
if (this.isReady()) {
const handler = foo.addEventHandler((event) => {
if (event.state === EVENT_COMPLETE) {
handler.remove();
onComplete(event.graphic);
}
});
foo.create();
}
}
foo.test.ts
import events from 'events';
class foo {
eventEmitter = new events.EventEmitter();
addEventHandler = () => this.eventEmitter.on('complete', (callback) => callback({state: 'complete'}));
isReady = jest.fn().mockImplementation(() => true);
create = () => this.eventEmitter.emit('complete');
}
export default new foo();