使用Play,Akka和Websockets进行集成测试

时间:2015-11-24 16:56:28

标签: scala testing playframework playframework-2.0 akka

我正在尝试使用我的应用程序(play,akka,scalatest ...)中的websockets进行一些接受/集成测试,这将由移动应用程序使用。我为每个演员做了一些单元测试(将来,我希望这个“单元”指的是不止一个演员)。现在我想测试整个系统。

对于非websocket端点,如:

package controllers

import play.api.mvc.{Action, Controller}

class StatusController extends Controller {
  def get() = Action { implicit request =>
    Ok
  }
}

我有测试:

package acceptance

import org.scalatestplus.play.{OneServerPerSuite, PlaySpec}
import play.api.libs.ws.WS
import play.api.test.Helpers._


class StatusSpec extends PlaySpec with OneServerPerSuite {
    "Server Status" should {
      "work" in {
        val response = await(WS.url(s"http://localhost:$port/status").get())

        response.status mustBe OK
      }
    }
}

在这种情况下,一切看起来都很好并且正常工作:)问题来自处理websockets的控制器:

@Singleton
class ChatController @Inject()(system: ActorSystem) extends Controller {

  def socket() = WebSocket.tryAcceptWithActor[JsValue, JsValue] { implicit request =>
    Future.successful(request.session.get("user") match {
      case None => Left(Forbidden)
      case Some(userId) => Right(TalkerSocket.props(userId))
    })
  }
}

我已经找了一些手册或教程来测试这些东西而没有运气。我已经看到用浏览器和Selenium测试它了...

我想打开模拟两个客户端,打开两个websockets,从其中一个客户端发送一些消息,并从另一个客户端收听响应。你认为这种方法是正确的吗?没有浏览器可以吗?

由于

0 个答案:

没有答案