I've blogged previously about testing messages sent back to the sender and to a child actor. The final common scenario I come across is testing actors that send a messages back to its supervisor/parent. If it is in response to a message from the parent you can use the same technique as described in testing messages sent back to the sender.
However, if that is not the case then TestKit has a very simple way you can do it with the TestActorRef and a TestProbe. Any where you have a piece of code that looks like this:
context.parent ! "Any message"
For example:
Then you can test it by passing a TestProbe to your TestActorRef and using the expect* functions on the TestProbe. So to test the actor above your test will look something like this:
As you can see the TestActorRef can take an ActorRef to use as a parent when you use the apply method that takes in a Props.
Full code here. Happy testing.
3 comments:
Thanks, this helped a lot. I am using Java, but still I was able to test my parent/child.
thanks, really helpful
Thanks heaps for sharing that. I was scratching my head as to why sender ! Message worked but couldn't get the parent ! Message test working.
Post a Comment