2013-06-05 42 views
19

Akka Testing docs提供以下方法来建立一个TestActorRef:如何在Scala中为构造函数参数的Actor创建一个TestActorRef?

 
import akka.testkit.TestActorRef 

val actorRef = TestActorRef[MyActor] 

如何扩展该测试现有的演员是需要构造函数参数?当我尝试运行此原样,代入我的演员班,我得到以下错误:

“的错误,同时创造演员 akka.actor.ActorInitializationException:无法实例演员
确保演员是不是里面定义如果是这样,把它放在课堂/特质之外,在同伴对象中,fe,
或者尝试将'actorOf(Props [MyActor]'改为'actorOf(Props(new MyActor)')

我可以考虑在方括号内的类名之后添加参数的所有想法都会崩溃并烧毁, 。

回答

24

您可以使用Props这样的:

val actorRef = TestActorRef(Props(new MyActor(param1, param2))) 

或工厂的方法是这样的:

val actorRef = TestActorRef(new MyActor(param1, param2)) 

见对象TestActorRefapply方法。

+2

谢谢,这是诀窍。我在val中添加了一个类型声明: 'val actorRef:TestActorRef [MyActor] = TestActorRef(Props(new MyActor(param1,param2))) 我现在可以干净地访问它。 – David

+0

这似乎不再有效。或者至少不适用于在测试类中声明的actor。 – davidrpugh

+0

@davidrpugh:它对我来说很好[看到这个](http://pastebin.com/zxFHKTj0) – senia

相关问题