我想測試我與Scaldi玩2.4的應用程序中的演員A
。這位演員打電話給injectActorRef[B]
,我想嘲笑TestKit.TestProbe
。Scaldi:綁定[T <AkkaInjectable]到TestProbe.ref
在我的specs2中,我希望能夠在爲演員A
提供相應的TestKit.TestProbe.ref的同時檢索嘲諷B
的探針。
我願做這樣的事情:
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'。 –