【发布时间】:2013-12-10 12:33:55
【问题描述】:
我有一个代表共享资源的演员。工作者 Actor 通过以下方式接受它作为构造函数参数:
class Worker(G: ActorRef) extends Actor {
G ! Graph.Look(start)
...
}
我正在尝试为 Worker/Resource 交互设计测试代码,但未能达到:
val probe = TestProbe()
val worker = system.actorOf( Props(classOf[Worker], probe.ref))
probe.expectMsg(Look(0))
预期的想法是检查对 G 的每个请求并将其转发给真正的参与者,观察几次迭代的后果。但是上面的代码会导致这个运行时错误:
java.lang.IllegalArgumentException: no matching constructor found on class Worker for arguments [class akka.actor.RepointableActorRef]
如果这不是测试这种交互循环的正确方法,还有什么替代方法
build.sbt:
libraryDependencies ++= Seq(
"com.typesafe.akka" %% "akka-actor" % "2.2.3"
, "com.typesafe.akka" %% "akka-testkit" % "2.2.3"
...
【问题讨论】:
-
Worker 是内部类吗?如果是这样,它需要
this在其构造函数中指向外部类的指针(是的,真的)。 -
情况并非如此,但请牢记在心,以备不时之需。谢谢。
标签: unit-testing akka