我正在尝试像这样的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/

10-10 16:35