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可能很难,但这并非不可能。我想检查系统行为。