Akka 测试演员系统
我有下一个密码Akka 测试演员系统,akka,Akka,我有下一个密码 class MySystem(outerResourse: OuterResourse) extends Actor { val firstActor = context.actorOf(Props(new FirstActor(outerResourse)), "first") val secondActor = context.actorOf(Props(new SecondActor(firstActor)), "second") secondActor
class MySystem(outerResourse: OuterResourse) extends Actor {
val firstActor = context.actorOf(Props(new FirstActor(outerResourse)), "first")
val secondActor = context.actorOf(Props(new SecondActor(firstActor)), "second")
secondActor ! Go
def receive = {
case x: AnotherMessage => printl(s"another message: $x")
case x => println(x)
}
}
class FirstActor(outerResourse: OuterResourse) extends Actor {
def receive = {
case Test =>
context.parent ! AnotherMessage
sender ! "ok"
}
}
class SecondActor(firstActor: ActorRef) extends Actor {
def receive = {
case Go => firstActor ! Test
case "ok" => println("ok")
}
}
这里的OuterResourse
是一个任意资源文件,internet连接
我想检查一个行为,但我很尴尬,我不知道如何检查第二个演员是否得到“ok”,以及mySystem
演员是否得到AnotherMessage
class MyTest(_system: ActorSystem) extends TestKit(_system)
with ImplicitSender with FunSpecLike with Matchers {
def this() = this(ActorSystem("myTest"))
val outerResourse = new OuterResourse()
val mySystem = system.actorOf(Props(new MySytem(outerResourse)))
describe("Actors") {
it("should get AnotherMessage message and ok message") {
???
}
}
}
需要检查的是,
secondActor
是否收到“ok”消息 您可以为println
usnig控制台设置自定义OutputStream
。它可以是模拟和“等待”来自第一个参与者的OK消息。但这不是很好
//编辑:请阅读文档
Akka向他们提供owm测试“框架”我只使用了一个println
作为例子,但最好使用mock更一般,为什么要尝试测试整个系统?只要测试一下被测试的演员,他们是否工作得很好。为actor编写UnitTest可能很难,但这并非不可能。我想检查系统行为。