我对 Scala 还很陌生,所以请保持温和。
在我目前正在构建的应用程序中,我正在使用 Akka 演员,我想编写一些单元测试。我遇到了这个为 Akka 演员编写单元测试的官方文档
但我不明白它应该如何工作。尤其,
val actorRef = TestActorRef(new MyActor)
// hypothetical message stimulating a '42' answer
val future = actorRef ? Say42
val Success(result: Int) = future.value.get
result must be(42)
当我尝试这样做时,我得到了not found: value Success
,这并不奇怪。
然后我找到了如何测试 Scala 演员的这个例子
val actorRef = TestActorRef[TickTock]
implicit val timeout = Timeout(5 seconds)
val future = (actorRef ? new Tick("msg")).mapTo[String]
val result = Await.result(future, timeout.duration)
Assert.assertEquals("processed the tick message", result)
,诚然,这可能是旧的,但它很容易理解并且更接近我想使用 Futures 时通常使用的内容,并且最重要的是有效。它确实需要我声明一些隐式,如 ActorSystem、超时等,而官方方式似乎并非如此......
如果可能的话,我想使用官方文档提出的方法,所以如果有人能帮助我理解它是如何工作的(特别是 Success 位)以及如何使用它,我将不胜感激。