小编mig*_*fsf的帖子

用笑话模拟自定义事件发射器

我想断言使用 Jest 使用特定参数调用了 EventEmitter 类的发射。我有一个单独的文件,在其中创建要使用的 eventEmitter 实例,并在另一个类上导入它,并在某个时刻发出事件。

// commonEmitter.ts
const events = require('events');
export const commonEmitter = new events.EventEmitter();

// class.ts
import { commonEmitter } from (..)

export class MyClass {
   (...)       

   method(){
     commonEmitter.emit('eventName', { data: true});
   }
}

// class.spec.ts

let commonEmitterMock: any

beforeEach(() => {
  commonEmitterMock = createMock('emit');
});


it('testMyClass', async () => {
   const method = new MyClass().method();
   expect(commonEmitterMock).toHaveBeenCalledWith('eventName', { data: true})
}
Run Code Online (Sandbox Code Playgroud)

通过这个实现,emit 事件永远不会被调用。不知道为什么,有什么想法吗?

events node.js eventemitter typescript jestjs

6
推荐指数
1
解决办法
2万
查看次数

标签 统计

eventemitter ×1

events ×1

jestjs ×1

node.js ×1

typescript ×1