如何测试window.addEventListener('storage', (storageEvent: StorageEvent) => { ..... })?

How to test window.addEventListener('storage', (storageEvent: StorageEvent) => { ..... })?

如何测试 adddEventListener?我正在尝试模拟 addEventListener 调用,但我什至无法用 jest

模拟调用
      public checkChangeLocalStorage() {
    window.addEventListener('storage', (storageEvent: StorageEvent) => {
        this.checkAuthenticityLocalStorage(storageEvent)
    })
}

我这样试过:

    document.addEventListener = jest
        .fn()
        .mockImplementationOnce((event, callback) => {
            callback()
        })

    service.checkChangeLocalStorage()
    expect(document.addEventListener).toHaveBeenCalled()

错误:

  expect(jest.fn()).toBeCalled()

Expected number of calls: >= 1
Received number of calls:    0

  47 |
  48 |         service.checkChangeLocalStorage()
> 49 |         expect(document.addEventListener).toHaveBeenCalled()

我是这样解决的:

 window.addEventListener = jest
        .fn()
        .mockImplementationOnce((event, callback) => {
            callback(returnMock)
        })

    service.checkChangeLocalStorage()
    expect(window.addEventListener).toBeCalledWith('storage', expect.any(Function))

参考:https://www.codeguru.co.in/2021/02/testing-javascript-events-with-jest.html