2012-03-09 94 views
3

我正在爲Akka actors編寫單元測試並希望驗證日誌條目;例如測試xyz寫入錯誤類別。 (你知道,假設我通過!發送給演員一個消息而不是?)akka - 測試特定的日誌條目

在演員中,我將寫入記錄錯誤或信息或調試等情況取決於處理的消息的結果通過「接收」。

對於阿卡1.2或1.3,我應該怎麼做呢?例如:添加一個新的偵聽器給EventHandler?其他想法?

由於提前, 託德

回答

3

約翰已覆蓋在他的回答已經基本(我管的消息給testActor而是採用了TestLatch,但是這是一個品味的問題)。我知道它不符合你的要求,但也許下面可以引誘你入Akka 2.0?

EventFilter.error(message = "some message", occurrences = 1) intercept { 
    // do something which should trigger such a log message 
} 

這些設備來自阿卡 - testkit,特別是akka.testkit.TestEventListenerakka.testkit.EventFilter。上面顯示的代碼將等待長達三秒(可在「akka.test.filter-leeway」中配置)以顯示該消息,並在未出現的情況下提供一條信息性錯誤消息。

+7

東西讓我感動。在Akka 2.1中,您可以通過配置 'akka.event-handlers = [「akka.testkit.TestEventListener」]來啓用它。在2.2中,這已更改爲 'akka.loggers = [「akka.testkit.TestEventListener」]'。 [文件](http://doc.akka.io/docs/akka/2.2-M3/scala/testing.html#Expecting_Log_Messages) – theon 2013-05-01 09:38:51