如何使用 Kotlin JS 正确测试 websocket 连接
How to properly test web socket connection with KotlinJS
我无法测试使用本机 WebSocket
的代码。这是测试函数的主体:
val webSocket = WebSocket("ws://localhost:8888")
window.setTimeout({
assertEquals(WebSocket.OPEN, webSocket.readyState)
}, 1000)
我将 Karma 与 Mocha 测试运行器一起使用。下面的代码执行没有任何错误,但是 setTimeout
实际上被忽略并且从未执行过。
Mocha 似乎支持使用 --delay
基于 setTimeout
的测试。但是,当我将标志与 client: { mocha: { delay: true } }
Karma 配置一起使用时,测试只是冻结并失败,输出以下原因消息:
Disconnected, because no message in 60000 ms.
使用 setTimeout
执行测试的正确方法是什么?如果这很棘手,有没有其他方法可以在 WebSocket
完全连接后对它执行断言?我还没有使用任何 Mocha 特定的功能,所以我不介意更改框架。
如果你想测试异步代码,你需要在测试完成时告诉测试框架。
看到这个 。
从您的 @Test 函数返回 Promise 应该可以解决问题。
类似于:
@Test fun testWebSocket() = Promise<Unit> { resolve, reject ->
val webSocket = WebSocket("ws://localhost:8888")
window.setTimeout({
assertEquals(WebSocket.OPEN, webSocket.readyState)
resolve(Unit)
}, 1000)
}
我无法测试使用本机 WebSocket
的代码。这是测试函数的主体:
val webSocket = WebSocket("ws://localhost:8888")
window.setTimeout({
assertEquals(WebSocket.OPEN, webSocket.readyState)
}, 1000)
我将 Karma 与 Mocha 测试运行器一起使用。下面的代码执行没有任何错误,但是 setTimeout
实际上被忽略并且从未执行过。
Mocha 似乎支持使用 --delay
基于 setTimeout
的测试。但是,当我将标志与 client: { mocha: { delay: true } }
Karma 配置一起使用时,测试只是冻结并失败,输出以下原因消息:
Disconnected, because no message in 60000 ms.
使用 setTimeout
执行测试的正确方法是什么?如果这很棘手,有没有其他方法可以在 WebSocket
完全连接后对它执行断言?我还没有使用任何 Mocha 特定的功能,所以我不介意更改框架。
如果你想测试异步代码,你需要在测试完成时告诉测试框架。
看到这个
从您的 @Test 函数返回 Promise 应该可以解决问题。 类似于:
@Test fun testWebSocket() = Promise<Unit> { resolve, reject ->
val webSocket = WebSocket("ws://localhost:8888")
window.setTimeout({
assertEquals(WebSocket.OPEN, webSocket.readyState)
resolve(Unit)
}, 1000)
}