Events 测试以查看事件是否正在使用jest运行

Events 测试以查看事件是否正在使用jest运行,events,jestjs,event-handling,Events,Jestjs,Event Handling,我试图想出一个场景来实际测试事件是否正在运行。我的大脑是这样工作的。我注册了一个监听器,我希望间谍被调用,但不是吗 const EventEmitter = require('events') const ee = new EventEmitter() describe('Event Emitter', () => { it('Emit Listener', () => { ee.on('test', function() {}) const spy =

我试图想出一个场景来实际测试事件是否正在运行。我的大脑是这样工作的。我注册了一个监听器,我希望间谍被调用,但不是吗

const EventEmitter = require('events')
const ee = new EventEmitter()

describe('Event Emitter', () => {
  it('Emit Listener', () => {
    ee.on('test', function() {})   
    const spy = jest.spyOn(ee, 'on')

    ee.emit('test')
    expect(spy).toHaveBeenCalledTimes(1)
  })
})
jest.spyOn(ee,'on')
设置一个间谍,可以测试在此之后是否调用了
ee.on(…)
。由于不是这样,测试失败了。间谍不可能有追溯力。相反,应该在调用它之前设置它:

const spy = jest.spyOn(ee, 'on')
ee.on('test', function() {})   

expect(spy).toHaveBeenCalledTimes(1)
expect(spy).toHaveBeenCalledWith(expect.any(Function))
或者,如果目标是测试事件,则应:

const spy = jest.fn()
ee.on('test', spy)
ee.emit('test')

expect(spy).toHaveBeenCalledTimes(1)