Составная черта не работает - не может изменить метод получения актера

У меня есть иерархия актеров, которую я хотел бы проверить на сценарии ошибок - на самом деле проверить стратегии применяемых супервизоров. Мне нужно изменить метод получения актера - чтобы сообщение не получило актера. Я нашел составную черту, но не могу заставить ее работать. Мой код выглядит следующим образом:

trait FailActor extends Actor {

  abstract override def receive = LoggingReceive {
     fail.orElse(super.receive)
  }
  def fail:Receive = {
    case "fail" => throw new RuntimeException("Test")
  }
}

class AddressTranslatorFailActor(storage: ActorRef) extends AddressTranslatorActor(storage) with FailActor

И в прохождении теста этот неудачный актер:

val probe = TestProbe()
  val addressServiceProps = Props {
    new AddressServiceActor {
      override def translateAddressProps = classOf[AddressTranslatorFailActor]
    }
  }

где AddressService acctor определяется следующим образом:

class AddressServiceActor extends Actor with ActorLogging {

  def translateAddressProps: Class[_<:AddressTranslatorActor] = classOf[AddressTranslatorActor]
...

Но все равно получаю сообщение "провал" без разбора. Есть намеки?

0 ответов

Другие вопросы по тегам