如何使用 expectMsgClass 测试 Akka Action
how to test Akka Action with expectMsgClass
我是 scala akka 的新手
在我的测试代码中我有这个
val sendEmailActor = system.actorOf(SendEmailActor.props)
sendEmailActor ! email
expectMsgClass(SendEmailActor.SendEmailResult.getClass)
但是我测试失败了。
java.lang.AssertionError: assertion failed:
expected class vndirect.elasticemail.actor.SendEmailActor$SendEmailResult$,
found class vndirect.elasticemail.actor.SendEmailActor$SendEmailResult
所以我的 SendEmailActor return 和预期的一样 SendEmailResult
。但是测试单元失败了。我不知道为什么。 SendEmailActor$SendEmailResult$
和 SendEmailActor$SendEmailResult
有什么区别
你可能有类似的东西
object SendEmailActor {
...
case class SendEmailResult(some arguments)
object SendEmailResult // may be compiler generated
}
class SendEmailActor {
// has ... ! SendEmailResult(...) in some method
}
SendEmailActor.SendEmailResult.getClass
是 object SendEmailResult
的 class。 class SendEmailResult
的 class 是 classOf[SendEmailActor.SendEmailResult]
,所以这是你应该期待的。
我遇到这个问题时遇到了类似的问题,但建议的答案无效。我的任务是检查用作 Akka 消息的简单案例 class 的到达。
解决方案是使用:
expectMsgType[Message]
而不是 expectMsgClass。 (注意 "Type" 而不是 "Class"。)
我是 scala akka 的新手
在我的测试代码中我有这个
val sendEmailActor = system.actorOf(SendEmailActor.props)
sendEmailActor ! email
expectMsgClass(SendEmailActor.SendEmailResult.getClass)
但是我测试失败了。
java.lang.AssertionError: assertion failed:
expected class vndirect.elasticemail.actor.SendEmailActor$SendEmailResult$,
found class vndirect.elasticemail.actor.SendEmailActor$SendEmailResult
所以我的 SendEmailActor return 和预期的一样 SendEmailResult
。但是测试单元失败了。我不知道为什么。 SendEmailActor$SendEmailResult$
和 SendEmailActor$SendEmailResult
你可能有类似的东西
object SendEmailActor {
...
case class SendEmailResult(some arguments)
object SendEmailResult // may be compiler generated
}
class SendEmailActor {
// has ... ! SendEmailResult(...) in some method
}
SendEmailActor.SendEmailResult.getClass
是 object SendEmailResult
的 class。 class SendEmailResult
的 class 是 classOf[SendEmailActor.SendEmailResult]
,所以这是你应该期待的。
我遇到这个问题时遇到了类似的问题,但建议的答案无效。我的任务是检查用作 Akka 消息的简单案例 class 的到达。
解决方案是使用:
expectMsgType[Message]
而不是 expectMsgClass。 (注意 "Type" 而不是 "Class"。)