【发布时间】:2012-03-09 22:23:58
【问题描述】:
我正在为 Akka Actor 编写单元测试,并希望验证日志条目;例如测试 xyz 写入错误类别。 (你知道,假设我通过 ! 而不是 ? 向演员发送消息。)
在actor中,我将根据“receive”处理的消息结果写入日志以获取错误或信息或调试等情况。
对于 akka 1.2 或 1.3,我应该如何处理?示例:向 EventHandler 添加一个新的侦听器?其他想法?
提前致谢, 托德
【问题讨论】:
我正在为 Akka Actor 编写单元测试,并希望验证日志条目;例如测试 xyz 写入错误类别。 (你知道,假设我通过 ! 而不是 ? 向演员发送消息。)
在actor中,我将根据“receive”处理的消息结果写入日志以获取错误或信息或调试等情况。
对于 akka 1.2 或 1.3,我应该如何处理?示例:向 EventHandler 添加一个新的侦听器?其他想法?
提前致谢, 托德
【问题讨论】:
John 在他的回答中已经涵盖了基础知识(我会将消息通过管道发送到 testActor,而不是使用 TestLatch,但这是个人喜好问题)。我知道它不符合您的要求,但也许以下内容可以吸引您进入 Akka 2.0?
EventFilter.error(message = "some message", occurrences = 1) intercept {
// do something which should trigger such a log message
}
这些工具来自 akka-testkit,特别是 akka.testkit.TestEventListener 和 akka.testkit.EventFilter。上面显示的代码将等待最多 3 秒(可在“akka.test.filter-leeway”中配置)以等待消息出现,如果没有出现,则会给出信息性错误消息。
【讨论】:
akka.event-handlers = ["akka.testkit.TestEventListener"] 启用此功能。在 2.2 中,这已更改为 akka.loggers = ["akka.testkit.TestEventListener"]。 Docs