Я пытаюсь протестировать актера A
внутри приложения Play 2.4 с Scaldi. Этот актер звонит injectActorRef[B]
, который я хочу высмеять с помощью TestKit.TestProbe
.Scaldi: Bind [T <AkkaInjectable] to TestProbe.ref
Внутри моих спецификаций2, я хотел бы иметь возможность получить зонд для издевательства B
, предоставив соответствующий TestKit.TestProbe.ref для актера A
.
Я хотел бы сделать что-то вроде этого:
implicit val inj = (new TestModule(){
bind[TestProbe] identifiedBy 'probeForB to TestProbe()
bind[B] to inject[TestProbe]('probeForB).ref
}).injector
inject[TestProbe]('probeForB).expectMsgType[] must ...
Вопрос заключается в том, что ссылка является ActorRef
и, следовательно, не соответствует ожидаемому B
типа.
Есть ли чистый способ сделать это? Можно ли указать ActorRef для возврата injectActorRef[B]
?
Я закончил переопределять привязку для Актера A
.
val probeForB = TestProbe()
implicit val inj = (new Module() {
bind[A] to new A() {
override def injectB(): ActorRef = probeForB.ref
}
}).injector
Потеря отношения родитель-ребенок не является вариантом в моем случае. Я попытаюсь взглянуть на 'class TestActorRef'. –