gpt4 book ai didi

javascript - 为什么我能够在 Node/Jest 中访问 WebSocket native 浏览器对象?

转载 作者:行者123 更新时间:2023-12-01 01:42:09 24 4
gpt4 key购买 nike

我的浏览器代码使用 WebSocket 的 native 实现,又名
var socket = new WebSocket('ws://localhost:8080')

虽然此代码在我的浏览器中完美运行,但我预计在使用 jest 运行代码时它会严重失败。

但令人惊讶的是,我没有出现错误,而且它似乎工作得很好。我也很惊讶控制台中没有任何更好的输出,我无法检查此对象以查看我可以访问的内容。

test('should fail because I cannot see any WebSocket API in node.js doc', async () => {
await new Promise( resolve => {
const socket = new WebSocket('ws://localhost:8080')

socket.onopen = function( event ){
console.log( event )
console.log( socket )
console.log( socket.onopen )

resolve()
}
})
})

它产生以下输出:

console.log tests/socket/socket.test.js:5
Event { isTrusted: [Getter] }
console.log tests/socket/socket.test.js:6
WebSocket {}
console.log tests/socket/socket.test.js:7
[Function]

为什么这在开 Jest ?为什么当我在 jest 中测试浏览器代码时不必使用像 ws 或 socket.io 这样的库?
这是因为开 Jest 吗?

最佳答案

Jest 默认在 JSDOM 中运行您的测试它实现了WebSocket。请参阅https://jestjs.io/docs/en/configuration#testenvironment-string

关于javascript - 为什么我能够在 Node/Jest 中访问 WebSocket native 浏览器对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52299063/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com