-
Notifications
You must be signed in to change notification settings - Fork 64
Open
Description
akka 提供了 TestActorRef 帮助我们同步测试 Actor.
def log(m: => String) = println(s"${Thread.currentThread} - $m")
def logReceived(m: => Any)(implicit self: ActorRef) = log(s"$self received: $m")
class A extends Actor {
def receive = {
case x => logReceived(x)
}
}
class B extends Actor {
private val a = context.actorOf(Props(new A))
def receive = {
case x => logReceived(x); a ! x
}
}
val a = TestActorRef(new A, "a")
log("Send a message to a")
a ! "message"
val b = TestActorRef(new B, "b")
log("Send a message to b")
b ! "message"但运行完上面的完整代码, 打印输出结果会告诉你 :
- 向
a发消息时, 收到消息的打印是同步执行的 - 当向
b发消息时, 但a收到消息的打印却是异步的
实际开发中, 总会有如B对A的依赖, 那么针对B的单元测试怎么做好呢?