8

ScalaTest と Akka TestKit を使用して、内部状態を変更せずに別のアクターにメッセージを送信するようにコード化したアクターの単体テストと統合テストを作成しています。たとえば、次のようにします。

class MyActor extends Actor {
  val anotherActor = context.actorOf(Props[AnotherActor])
  def receive: Receive = {
    case MyMessage => anotherActor ! AnotherMessage
  }
}

processingの結果としてanotherActor処理されたことを確認するテストを書きたいと思います。古典的な例は、次のように、基になるアクターを取得し、メッセージの受信時に影響を受けるはずの内部状態を確認するために使用することです。AnotherMessageMyActorMyMessageTestActorRef

val testActorRef = TestActorRef(new MyActor)
"MyActor" should "change some internal state when it receives MyMessage" in {
  testActorRef ! MyMessage
  testActorRef.underlyingActor.someState shouldBe "altered"
}

しかし、私の場合、そのような状態は気にしません。実際、そのような状態を保持することは避けたいと思っています。テスト対象のアクターTestProbeに登録する必要があるため、私が探していたものとはまったく異なりました。TestProbe.refほとんどの場合、テストに関する Akka ドキュメント ( http://doc.akka.io/docs/akka/snapshot/scala/testing.html ) のすべての例を見てきましたが、適切なものは見つかりませんでした。

4

1 に答える 1