繁体   English   中英

测试演员已收到特定消息

[英]testing that an actor has received a specific message

我是Akka和演员模型的新手,在尝试测试演员时我很挣扎。

Akka文档中,您可以创建一个简单的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是否已从IO(Tcp)接收到Bound消息。 我想这是可能的,但我想我缺少了一些东西。 我对expectMsg理解是,此方法适用于向正在测试的演员发送消息,收到回传并断言它收到的内容的演员。 我实际上可以检查我创建的演员收到了什么吗?

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

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

  1. 使用TestProbe验证您收到的绑定消息,表明您的设置代码正确无误
  2. 向演员发送与IO相同的消息,并验证其行为是否正确

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM