加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 在PlayFramework中测试WebSocket

发布时间:2020-12-14 16:39:02 所属栏目:Java 来源:网络整理
导读:我的Play应用程序中有一个WebSocket,我想为其编写一个测试,但是我找不到如何编写这样一个测试的例子.我在 play-framework Google群组中发现了一个讨论,但最近没有任何活动. 那么,有没有关于如何在Java测试中测试WebSocket的想法? 解决方法 您可以检索底层It
我的Play应用程序中有一个WebSocket,我想为其编写一个测试,但是我找不到如何编写这样一个测试的例子.我在 play-framework Google群组中发现了一个讨论,但最近没有任何活动.

那么,有没有关于如何在Java测试中测试WebSocket的想法?

解决方法

您可以检索底层Iteratee,枚举器并直接测试它们.这样就不需要使用浏览器了.你需要akka-testkit,以应对迭代的异步性质.

一个Scala示例:

object WebSocket extends Controller {
  def websocket = WebSocket.async[JsValue] { request =>
    Future.successful(Iteratee.ignore[JsValue] -> Enumerator.apply[JsValue](Json.obj("type" -> "error")))   
  }
}

class WebSocketSpec extends PlaySpecification {    
  "WebSocket" should {
    "respond with error packet" in new WithApplication {
      val request = FakeRequest()

      var message: JsValue = null
      val iteratee = Iteratee.foreach[JsValue](chunk => message = chunk)(Akka.system.dispatcher)

      Controller.websocket().f(request)(Enumerator.empty[JsValue],iteratee)

      TestKit.awaitCond(message == Json.obj("type" -> "error"),1 second)
    }
  }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读