我正在尝试像这样的TestActorRef
class NotifySenderTest(_system: ActorSystem) extends TestKit(_system) with ImplicitSender with WordSpecLike with Matchers with BeforeAndAfterAll with BeforeAndAfter {
def this() = this(ActorSystem("NotifySenderTest"))
override def afterAll {
TestKit.shutdownActorSystem(system)
}
"A NotifySender" must {
"be able to process the required messages" in {
val actorRef = TestActorRef[NotifySender] //Line 92
}
}
这个演员
class NotifySender extends Actor with Stash {
import Tcp._
import context.system
def receive = {
[...]
}
}
但这给我留下了以下堆栈跟踪
java.lang.NullPointerException:在
akka.actor.dungeon.Dispatch $ class.init(Dispatch.scala:62)在
akka.actor.ActorCell.init(ActorCell.scala:338)在
akka.actor.LocalActorRef。(ActorRef.scala:304)在
akka.testkit.TestActorRef。(TestActorRef.scala:21)在
akka.testkit.TestActorRef $ .apply(TestActorRef.scala:141)在
akka.testkit.TestActorRef $ .apply(TestActorRef.scala:137)在
akka.testkit.TestActorRef $ .apply(TestActorRef.scala:146)在
akka.testkit.TestActorRef $ .apply(TestActorRef.scala:144)在
actor.NotifySenderTest $$ anonfun $ 2 $$ anonfun $ apply $ mcV $ sp $ 4.apply $ mcV $ sp(NotifySenderTest.scala:92)
在
actor.NotifySenderTest $$ anonfun $ 2 $$ anonfun $ apply $ mcV $ sp $ 4.apply(NotifySenderTest.scala:91)
...
编辑:似乎特别与此演员有关。将TestActorRef获取到另一个actor类可以正常工作。我读到具有Stash特性的Actor的TextActorRefs存在问题,但是据说在当前版本中已解决。 (Reference)
编辑2:好的。我错了。当前版本不是2.3。所以我必须等待?
最佳答案
验证了升级到akka 2.3.0是修复具有TestActorRef
特征的Stash
的正确答案。
关于scala - 创建TestActorRef会导致NullPointerException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21725473/