BehaviorTestKit: get child inbox by anonymous ActorRef

This commit is contained in:
Arnout Engelen 2018-09-06 16:29:34 +02:00
parent cc0705483b
commit 50e9b14d0b
4 changed files with 17 additions and 2 deletions

View file

@ -50,6 +50,9 @@ private[akka] final class BehaviorTestKitImpl[T](_path: ActorPath, _initialBehav
inbox.get
}
override def childInbox[U](ref: ActorRef[U]): TestInboxImpl[U] =
childInbox(ref.path.name)
override def childTestKit[U](child: ActorRef[U]): BehaviorTestKitImpl[U] = ctx.childTestKit(child)
override def selfInbox(): TestInboxImpl[T] = ctx.selfInbox

View file

@ -52,6 +52,12 @@ abstract class BehaviorTestKit[T] {
*/
def childInbox[U](name: String): TestInbox[U]
/**
* Get the child inbox for the child with the given name, or fail if there is no child with the given name
* spawned
*/
def childInbox[U](child: ActorRef[U]): TestInbox[U]
/**
* Get the [[akka.actor.typed.Behavior]] testkit for the given child [[akka.actor.typed.ActorRef]].
*/

View file

@ -53,6 +53,11 @@ trait BehaviorTestKit[T] {
*/
def childInbox[U](name: String): TestInbox[U]
/**
* Get the child inbox for the child ActorRef, or fail if there is no such child.
*/
def childInbox[U](child: ActorRef[U]): TestInbox[U]
/**
* Get the [[akka.actor.typed.Behavior]] testkit for the given child [[akka.actor.typed.ActorRef]].
*/

View file

@ -96,8 +96,9 @@ class SyncTestingExampleSpec extends WordSpec with Matchers {
//#test-child-message-anonymous
val testKit = BehaviorTestKit(myBehavior)
testKit.run(SayHelloToAnonymousChild)
// Anonymous actors are created as: $a $b etc
val childInbox = testKit.childInbox[String](s"$$a")
val child = testKit.expectEffectType[SpawnedAnonymous[String]]
val childInbox = testKit.childInbox(child.ref)
childInbox.expectMessage("hello stranger")
//#test-child-message-anonymous
}