我正在尝试A
使用 Scaldi 在我的 Play 2.4 应用程序中测试一个 Actor。这个演员正在打电话injectActorRef[B]
,我想用TestKit.TestProbe
.
在我的 specs2 中,我希望能够在B
向 actor 提供相应的 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 ...
问题是 ref 是一个,因此与预期的类型ActorRef
不匹配。B
有没有一种干净的方法可以做到这一点?我们可以指定一个 ActorRef 返回injectActorRef[B]
吗?
我最终覆盖了 Actor 的绑定A
。
val probeForB = TestProbe()
implicit val inj = (new Module() {
bind[A] to new A() {
override def injectB(): ActorRef = probeForB.ref
}
}).injector