2
我們正在開發一個帶有Scala和Websockets的應用程序。對於後者,我們使用Java-Websocket。應用程序本身很好,我們正在編寫單元測試。用於測試的單線程Java Websocket
我們使用的WebSocket類如下
class WebSocket(uri : URI) extends WebSocketClient(uri) {
connectBlocking()
var response = ""
def onOpen(handshakedata : ServerHandshake) {
println("onOpen")
}
def onMessage(message : String) {
println("Received: " + message)
response = message
}
def onClose(code : Int, reason : String, remote : Boolean) {
println("onClose")
}
def onError(ex : Exception) {
println("onError")
}
}
一個測試可能是這樣的(僞代碼)
websocketTest {
ws = new WebSocket("ws://example.org")
ws.send("foo")
res = ws.getResponse()
....
}
發送和接收數據的作品。但是,問題是連接到websocket會創建一個新線程,只有新線程才能使用onMessage
處理程序訪問response
。使websocket實現單線程或連接兩個線程以便我們可以訪問測試用例中的響應的最佳方法是什麼?還是有另一種更好的方法呢?最後,我們應該能夠以某種方式測試WebSocket的響應。