禁用 Jest setTimeout 模拟
Disable Jest setTimeout mock
我正在为依赖于 websocket 库的代码编写 Jest 测试。
websocket 库被模拟。我想发送消息,等待异步操作完成,然后检查响应。
it('sends a message and gets a response', () => {
processor(ws).sendMessage() // do a bunch of async stuff, call websocket.sendMessage()
setTimeout(() => {
expect(ws.getResponse()).toEqual('all done')
}, 100)
})
不幸的是,因为 Jest 模拟了 setTimeout,所以 setTimeout 失败了。如果我运行jest.runAllTimers()
,瞬间超时,所以无法提取消息。
知道如何说服 jest 取消模拟 setTimeout 或 Jasmine 解决方法吗?
您可以在测试用例之前添加以下代码。它适用于 Jest v14.1.0 -
jest.useRealTimers()
我正在为依赖于 websocket 库的代码编写 Jest 测试。
websocket 库被模拟。我想发送消息,等待异步操作完成,然后检查响应。
it('sends a message and gets a response', () => {
processor(ws).sendMessage() // do a bunch of async stuff, call websocket.sendMessage()
setTimeout(() => {
expect(ws.getResponse()).toEqual('all done')
}, 100)
})
不幸的是,因为 Jest 模拟了 setTimeout,所以 setTimeout 失败了。如果我运行jest.runAllTimers()
,瞬间超时,所以无法提取消息。
知道如何说服 jest 取消模拟 setTimeout 或 Jasmine 解决方法吗?
您可以在测试用例之前添加以下代码。它适用于 Jest v14.1.0 -
jest.useRealTimers()