2017-05-01 52 views
0

在我的項目中,我們經常使用無狀態的演員。原因是我們希望將這些角色用於即時消息。測試無狀態,單向信息AKKA演員

這爲我們提供了無需創建和管理自己的期貨執行異步任務的快捷方式。

這很好,但其中一個問題是測試這個東西真的很難。我想知道我該如何編寫測試用例。

一個明顯的想法是,在代碼執行結束時,我可以執行sender ! EmptySuccess,然後測試用例可以使用ask模式查看他們是否獲得了EmptySuccess。

問題是,在生產中所有的代碼將使用!作爲參與者,因此我們可能會有很多dead letter messages這可能污染我們的日誌(因爲發件人並不真的等待接收來自演員)。

編輯:我們不想現在切換到期貨。原因是這是遺留代碼,如果我們不能一直追溯到我們的未來,因爲這意味着很多代碼的改變。

+0

您是否嘗試過的消息匹配器[阿卡TestKit(HTTP://doc.akka .IO /文檔/阿卡/電流/斯卡拉/ testing.html)? –

+0

這取決於你的演員所做的副作用。我看到的平常模式是,在將消息發送給演員後,您檢查是否在給定的超時內完成了副作用。 –

回答

0

對於此問題的最佳解決方案可能在阿卡測試工具包中。

http://doc.akka.io/docs/akka/current/scala/testing.html

如果你只是想測試一個演員被髮送到另一演員,他們接收,發送消息到測試探頭。然後,您可以檢查探頭,做真正有用的東西喜歡確保收到n秒消息的x個或使用應在探頭