1

首先,我不是在问如何对 Akka Actor 进行单元测试。我知道这样做的技巧。我的问题略有不同。

我正在开发一个client不使用 Akka Actors 的 Scala 程序,我们称之为 . 但是,该程序使用了一个库,我们称它为server,它的接口是使用 Akka Actor 实现的。

然后,通过ask 模式, 与client交互server

// This is the client program
class Client(uri: String) {
  implicit val context: ActorSystem = ActorSystem("client-actor-system")
  private val mainActor = context.actorSelection(uri)

  def connect: Future[SomeClass] = {
    implicit val timeout: Timeout = Timeout(5 seconds)
    (mainActor ? Connect()).mapTo[CreationResponse]
  }
}

现在,我想为Client班级写一些单元测试。单元测试意味着单独测试一个类。每个外部依赖项都应该被模拟。

如何模拟对mainActor内部Client类的引用?我如何在演员系统中注入一个模拟演员mainActor

提前致谢。

4

1 回答 1

2

我会将mainActor演员选择注入客户端,并使用 Akka TestKits 创建它。

当然,你需要一个ActorSelection,而不是一个ActorRef. 可以在这里找到一些解决方案:

为 testProbe 提供 ActorPath

或者,您可以mainActor通过ActorRef向.IdentifyActorSelection

于 2017-09-29T06:58:26.683 回答