Akka Test TCP命令失败

时间:2017-10-26 18:25:08

标签: scala akka akka-testkit

我正在尝试编写我的第一个Akka测试并浏览文档。我正在运行它的第一个example并收到以下错误:

  

[ERROR] [10/26/2017 14:08:55.371] [IngestionWorkerActorSpec-akka.actor.default-dispatcher-4] [akka:// IngestionWorkerActorSpec / user / $ b]    断言失败:在等待测试消息期间在expectMsg期间超时(3秒)   java.lang.AssertionError:断言失败:在等待测试消息期间在expectMsg期间超时(3秒)

以下是我的测试演员的接收方法:

override def receive: Receive = {
case p: ProducerRecord[_,_] =>
      sendChannel.send(p.value())
case _ => logger.error("Unknown type Producer Record Received.")
}

Testspec:

val uutActor =system.actorOf(IngestionWorkerActor.props(config, KafkaProducer))
"An actor must send " should  {
"send back messages unchanged" in {
  uutActor ! expected
  Thread.sleep(50)
  expectMsg(expected)
}
}

我想测试我的演员是否收到发送给它的消息,之后我想修改它以查看我是否收到特定消息。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

expectMsg(something)表示该演员将回复somethingsender()(当您发送消息时被!的隐式参数捕获),它不会反思演员收到的消息。

最佳做法是避免尝试编写调查角色内部的测试,而是验证它们在发送消息时的行为方式。在这种情况下,可能是在那里放置一个模拟sendChannel并验证是否在其上发送了正确的值。