1

我正在测试一个生成和协调童工演员的演员。为了做到这一点,我用TestProbes 替换了子 actor 创建,它用于观察和模拟交换的消息。

但是,我在尝试测试演员的监督策略时遇到了问题。我能够通过AutoPilotTestProbe. 但事实证明,TestProbes 默认由系统监护人监督,我的测试参与者没有收到错误通知。

想到的一个想法是设置一个中间ForwarderActors 层,该层将由测试参与者监督并生成测试异常,但否则会在TestProbe测试参与者之间转发消息,如下所示:

case class GenerateException(exception: Exception)

class ForwarderActor(phase: Phase) extends Actor {
  val probe  = TestProbe(phase.toString)

  override def receive: Receive = {
    case GenerateException(e) => throw e
    case msg if sender() == probe.ref => context.parent ! msg
    case msg => probe.ref ! msg
  }
}

这样,actor 将得到适当的监督,但仍然可以使用TestProbes 检查消息。

我想知道是否有更简单的方法可以做到这一点?

4

0 回答 0