1
讓說我有一個名爲TestedActor至極的演員就是能救一個int值並將其發回如下測試演員值:如何與一家工廠接收
class TestedActor extends Actor {
override def receive = receive(0)
def receive(number: Int): Receive = {
case new_number: Int => context.become(receive(new_number))
case ("get", ref: ActorRef) => ref ! number
}
}
在我的測試,我想能夠得到這個Integer並且測試它。
所以我一直在想喜歡創造一些:
class ActorsSpecs extends FlatSpec with Matchers {
case class TestingPositive(testedActor: ActorRef) extends Actor {
override def receive = {
case number: Int => checkNumber(number)
case "get" => testedActor ! ("get", self)
}
def checkNumber(number: Int) = {
number should be > 0
}
}
implicit val system = ActorSystem("akka-stream")
implicit val flowMaterializer = ActorMaterializer()
val testedActor = system.actorOf(Props[TestedActor], name = "testedActor")
val testingActor = system.actorOf(Props(new TestingPositive(testedActor)), name = "testingActor")
testingActor ! "get"
}
這種方式,我能夠創建此TestingPositive演員,獲得在TestedActor數量和checkNumber測試。
這似乎運作良好,我的問題是:
當測試失敗,它提高在演員線程的異常,我可以看到什麼地方出了錯在控制檯中,但它仍然是說所有我的測試成功了。因爲(我認爲)主線程不知道這個失敗。
有人知道比所有這個TestingActor的東西更簡單的方法嗎?
或者任何解決方案告訴主線程它失敗了?
謝謝
謝謝你它運作良好!我不知道「發件人」的東西!我會讀你的博客;) – Charrette