【发布时间】:2014-09-02 20:24:10
【问题描述】:
我正在尝试为我的演员编写一些测试用例,问题是一些测试失败了,我不知道为什么他们失败了。
在正常情况下,我的代码运行良好(没有任何测试),但对于我的测试,我正在模拟 twitter4j 库的某些部分,这使得它们变得有些复杂。
测试失败,没有更多有用的信息。
有没有办法用 akka testkit 和 scalatest 记录收到的消息?
【问题讨论】:
我正在尝试为我的演员编写一些测试用例,问题是一些测试失败了,我不知道为什么他们失败了。
在正常情况下,我的代码运行良好(没有任何测试),但对于我的测试,我正在模拟 twitter4j 库的某些部分,这使得它们变得有些复杂。
测试失败,没有更多有用的信息。
有没有办法用 akka testkit 和 scalatest 记录收到的消息?
【问题讨论】:
如果您希望能够记录所有收到的消息,您必须做三件事:
1) 使用LoggingReceive(来自akka.event 包)将receive 函数包装在要启用日志记录的actor 上。
2) 将配置中的akka.actor.debug.receive 设置为true
3) 确保您的日志记录配置将显示 DEBUG 级别的消息
所以你的演员可能看起来像这样:
import akka.actor._
import akka.event.LoggingReceive
class MyActor extends Actor{
def receive = LoggingReceive{
case msg => ...
}
}
如果您进行了这样的设置,您应该开始看到所有传入消息都记录到您的被测演员的DEBUG 级别。您可以在 Akka Docs 的 Testing Actor Systems 部分阅读更多相关信息,特别是 Tracing Actor Invocations 小节。
【讨论】: