如何使用expectMsgClass测试Akka Action

时间:2015-12-24 10:01:11

标签: scala akka-testkit

我是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按预期返回SendEmailResult。但是测试单元失败了。我不知道为什么。 SendEmailActor$SendEmailResult$SendEmailActor$SendEmailResult

之间有何区别?

2 个答案:

答案 0 :(得分:3)

你可能有像

这样的东西
object SendEmailActor {
  ...
  case class SendEmailResult(some arguments)
  object SendEmailResult // may be compiler generated
}

class SendEmailActor {
  // has ... ! SendEmailResult(...) in some method
}

SendEmailActor.SendEmailResult.getClassobject SendEmailResult的类。 class SendEmailResult的等级为classOf[SendEmailActor.SendEmailResult],因此这是您应该期待的等级。

答案 1 :(得分:2)

我遇到了类似问题的问题,但建议的答案并不奏效。我的任务是检查用作Akka消息的简单案例类的到来。

解决方案是使用:

expectMsgType[Message]

而不是expectMsgClass。 (注意"键入"而不是" Class"。)