當我在Akka中有一位父母演員時,它會直接創建一個初始化的小孩演員,當我想爲父代演員編寫單元測試時,如何用TestProbe或模擬代替孩子演員?如何模擬兒童演員測試Akka系統?
例如,下面的做作的代碼示例:
class TopActor extends Actor {
val anotherActor = context.actorOf(AnotherActor.props, "anotherActor")
override def receive: Receive = {
case "call another actor" => anotherActor ! "hello"
}
}
class AnotherActor extends Actor {
override def recieve: Receive = {
case "hello" => // do some stuff
}
}
如果我想要寫TopActor測試,以檢查發送到AnotherActor的消息是「你好」,我怎麼替換實施AnotherActor?它看起來像TopActor直接創建這個孩子,所以這是不容易訪問。
至於有沒有其他的答案,這個解決方案,我有一個給予好評,我想我會接受我自己的回答:) –
您的'testTopActor.underlyingActor'將同時擁有'anotherActor'和'TopActor.anotherActor'。如果你的'anotherActor'在其構造函數或任何生命週期函數中沒有做任何事情,但是如果有某事正在運行網絡/數據庫連接(我知道這很糟糕,但僅僅是爲了說明這一點),那麼當你創建'testTopActor'時,你將有2個這樣的操作運行。也許這是值得注意的。 – CrazyGreenHand