我对Scala还比较新,请多关照。
在我目前正在构建的应用程序中,我正在使用Akka actors,并且想编写一些单元测试。我遇到了这个Akka actors编写单元测试的官方文档
但我无法确切理解它应该如何工作。特别是,
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)
当我尝试时,我得到了“未找到:值Success”的结果,这并不奇怪。
然后我发现了如何测试Scala actors的示例。
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 时所用的方式,而且最重要的是它能够工作。它确实需要我声明一些 implicit,例如 ActorSystem、timeout 等等,而官方方法似乎不需要...
如果可能的话,我想使用官方文档提出的方法,因此我希望有人能帮助我理解它的工作原理(特别是 Success 部分)以及如何使用它。
scala.util._
或者scala.util.Success
这样的导入吗? - 4lex1v