测试演员是否收到了特定的消息

时间:2014-05-11 11:17:52

标签: scala akka actor

我是Akka和演员模特的新手,在尝试测试一个演员时我正在努力。

Akka documentation你可以创建一个简单的actor,它将自己绑定到本地端口并使用以下代码监听传入的连接:

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 actor的测试,然后验证该actor是否已收到来自Bound的{​​{1}}消息。我想这是可能的,但我想我错过了一些东西。我对IO(Tcp)的理解是,这适用于向正在测试的演员发送消息的演员,接收回来的东西并断言它收到的东西。我真的可以查看我创建的演员收到了什么吗?

1 个答案:

答案 0 :(得分:0)

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

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

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