如何使用KotlinJS正确测试web套接字连接
我无法测试使用本机如何使用KotlinJS正确测试web套接字连接,kotlin,mocha.js,karma-mocha,kotlin-interop,kotlin-js-interop,Kotlin,Mocha.js,Karma Mocha,Kotlin Interop,Kotlin Js Interop,我无法测试使用本机WebSocket的代码。这是测试功能的主体: val webSocket = WebSocket("ws://localhost:8888") window.setTimeout({ assertEquals(WebSocket.OPEN, webSocket.readyState) }, 1000) 我在用卡玛和摩卡试跑者。下面的代码执行时没有任何错误,但是setTimeout实际上被忽略并且从未执行 Mocha似乎支持基于setTimeout的测试,带有--延迟
WebSocket
的代码。这是测试功能的主体:
val webSocket = WebSocket("ws://localhost:8888")
window.setTimeout({
assertEquals(WebSocket.OPEN, webSocket.readyState)
}, 1000)
我在用卡玛和摩卡试跑者。下面的代码执行时没有任何错误,但是setTimeout
实际上被忽略并且从未执行
Mocha似乎支持基于setTimeout
的测试,带有--延迟。但是,当我在client:{mocha:{delay:true}}
Karma配置中使用标志时,测试只是冻结并失败,输出以下原因消息:
已断开连接,因为60000毫秒内没有消息
使用setTimeout
执行测试的正确方法是什么?如果这很棘手,那么在WebSocket
完全连接后,是否还有其他方法可以对其执行断言?我还没有使用任何特定于Mocha的功能,所以我不介意更改框架。如果您想测试异步代码,您需要在测试完成时告诉测试框架。
看这个 如果要测试异步代码,需要在测试完成时告诉测试框架。
看这个 从@Test函数返回承诺应该可以做到这一点。
比如:
@Test fun testWebSocket() = Promise<Unit> { resolve, reject ->
val webSocket = WebSocket("ws://localhost:8888")
window.setTimeout({
assertEquals(WebSocket.OPEN, webSocket.readyState)
resolve(Unit)
}, 1000)
}
@Test fun testWebSocket()=承诺{解决,拒绝->
val webSocket=webSocket(“ws://localhost:8888”)
window.setTimeout({
assertEquals(WebSocket.OPEN、WebSocket.readyState)
决议(单位)
}, 1000)
}
从@Test函数返回承诺应该可以做到这一点。
比如:
@Test fun testWebSocket() = Promise<Unit> { resolve, reject ->
val webSocket = WebSocket("ws://localhost:8888")
window.setTimeout({
assertEquals(WebSocket.OPEN, webSocket.readyState)
resolve(Unit)
}, 1000)
}
@Test fun testWebSocket()=承诺{解决,拒绝->
val webSocket=webSocket(“ws://localhost:8888”)
window.setTimeout({
assertEquals(WebSocket.OPEN、WebSocket.readyState)
决议(单位)
}, 1000)
}
是的,我最终使用了Mocha绑定,并使用description
/it
使用done
回调。请注意,使用Promise
也可以实现。让测试返回承诺,并在完成断言时调用resolve
。是的,我最终使用了Mocha绑定,并使用description
/it
使用done
回调。注意,也可以使用promise
实现。完成断言后,让测试返回承诺并调用resolve
。承诺支持是在1.2.20中添加的,应该在Mocha、Jasmine和Jest中工作。这不是最终的设计,很可能会有一种更方便的方法。如果测试可以使用done:()->单元
回调,这会很方便,就像Mocha解决这个问题的方法一样。但是,我认为基于Promise
的方法目前是最好的,因为它不需要外部绑定。Promise支持是在1.2.20中添加的,应该在Mocha、Jasmine和Jest中使用。这不是最终的设计,很可能会有一种更方便的方法。如果测试可以使用done:()->单元
回调,这会很方便,就像Mocha解决这个问题的方法一样。然而,我认为基于Promise
的方法目前是最好的,因为它不需要外部绑定。