【问题标题】:testing that an actor has received a specific message测试参与者是否收到了特定消息
【发布时间】:2014-05-11 11:17:51
【问题描述】:

我是 Akka 和演员模型的新手,我在尝试测试演员时遇到了困难。

Akka documentation,您可以创建一个简单的参与者,将自己绑定到本地端口并使用以下代码侦听传入连接:

class Server extends Actor {

  import Tcp._
  import context.system

  IO(Tcp) ! Bind(self, new InetSocketAddress("localhost", 12345))

  def receive = {
    case b @ Bound(localAddress) =>
      // do some logging or setup ...

    // rest omitted for brevity
  }

}

我想编写一个测试来创建一个Server 演员,然后验证该演员是否已收到来自IO(Tcp)Bound 消息。我想这是可能的,但我想我错过了一些东西。我对expectMsg 的理解是,这适用于向您正在测试的参与者发送消息的参与者,接收返回的内容并断言它已收到的内容。我真的可以检查我创建的演员收到了什么吗?

【问题讨论】:

    标签: scala akka actor


    【解决方案1】:

    此测试将测试 Akka IO 是否正常工作/您是否正确使用 API,并且可以从等式中删除您的参与者,而是使用 TestProbe。

    将设置/注册逻辑与构建actor实例分开可能是个好主意。这样你就可以测试了:

    1. 您的设置代码是否正确,使用 TestProbe 验证您收到绑定消息
    2. 向您的 Actor 发送 IO 将发送给它的相同消息并验证其行为是否正确

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-27
      • 2018-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-04
      • 1970-01-01
      • 2011-07-29
      相关资源
      最近更新 更多