Scala と Websockets を使用してアプリケーションを開発しています。後者には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 に接続すると新しいスレッドが作成され、新しいスレッドのみがハンドラーをresponse
使用してアクセスできることです。onMessage
テストケースで応答にアクセスできるように、websocket 実装をシングルスレッドにするか、2 つのスレッドを接続する最良の方法は何ですか? または、それを行う別のさらに良い方法はありますか?最終的に、websocket の応答を何らかの形でテストできるはずです。