测试游戏控制器与 akka actor 的交互



我的游戏应用程序使用 akka actor 来处理长时间运行的计算:

class MyController(myActor : ActorRef) extends Controller{
  def doStuff = Action { implicit request =>
    val response : Future[Any] = myActor ? DoStuff
    Async{
      response.map{        
        str : String => Ok(str)
      }
    }
  }
}

我正在尝试测试事情是否正常工作。 我有单独的测试来检查参与者的行为是否正常,主要只是想检查控制器是否向参与者发送了正确的消息。我目前的方法有点像这样:

class MyControllerSpec extends Specification{
  "MyController" should {
    object DummyActor extends Actor{
      def receive = {
        case _ => ()
      }
    }
    "do stuff properly" >> {
       val probe = TestProbe()(Akka.system)
       val test = new controllers.MyController(Akka.system.actorOf(Props(DummyActor))
       val result = test.doStuff(FakeRequest())
       probe.expectMsg(SomeMsg)
    }
  }
}

控制器将在调用 doStuff 操作时向传入的参与者发送消息。我正在尝试验证是否发送了正确的消息。

我认为test.doStuff是同步运行的,当虚拟演员不发送任何内容时超时。期望Msg直到doStuff调用返回并且SomeMsg已经发送之后才会开始。如何解决这个问题?

您不想将探测器传递给控制器而不是虚拟参与者实现,如果不是,如何将某些内容发送到探测器?

相关内容

  • 没有找到相关文章

最新更新