我正在尝试使用我的应用程序(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,从其中一个客户端发送一些消息,并从另一个客户端收听响应。你认为这种方法是正确的吗?没有浏览器可以吗?
由于