首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Akka集群中测试订阅者的接收方法?

如何在Akka集群中测试订阅者的接收方法?
EN

Stack Overflow用户
提问于 2017-01-01 22:41:43
回答 1查看 322关注 0票数 5

我有以下Subscriber抽象基类:

代码语言:javascript
复制
abstract class Subscriber(topics: Seq[String]) extends Actor with ActorLogging {
  import DistributedPubSubMediator.{ Subscribe, SubscribeAck }

  val mediator = DistributedPubSub(context.system).mediator

  // subscribe to each topic
  topics.foreach{mediator ! Subscribe(_, self)}

  def receive = {
    case SubscribeAck(Subscribe(name, None, `self`)) ⇒
      log.info(s"Subscribing to $name")
  }
}

我想测试它是否接收发布到子类订阅的主题的消息。演示这一点的一些简单伪代码如下:

代码语言:javascript
复制
val topic = "foo"

class FooSubscriber extends Subscriber(Seq(topic))

val fooSubActor = system.actorOf(Props[FooSubscriber])    
val mediator = DistributedPubSub(system).mediator
val msg = "This is a string"

// Publish the msg to the "foo" topic.
mediator ! Publish(topic, msg)

fooSubActor.expectMsg(msg)

我所知道的对特定参与者接收的消息进行断言的唯一方法是通过TestProbe,但我不知道如何使TestProbe扩展我的类。

通常,Akka集群有大量带有相关测试套件的示例代码,但我在Akka docs文档中找不到任何与测试receive方法相关的内容。

有没有人有建议?

EN

回答 1

Stack Overflow用户

发布于 2017-01-05 03:21:47

这是一个教科书上的例子,说明了依赖注入对可测试性的帮助。

如果您在订阅者构造函数中接收DistPubSub的中介器,而不是直接请求它,那么您可以单独测试Suscriber参与者,而不需要使用DistPubSub作为测试装置的一部分。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41416269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档