当前位置:  开发笔记 > 编程语言 > 正文

如何模拟一个Akka演员单元测试一个类?

如何解决《如何模拟一个Akka演员单元测试一个类?》经验,为你挑选了1个好方法。

我有一个Controller类,它控制发送给Akka actor的请求,该请求被注入控制器.

控制器代码:

class Controller(actor: ActorRef) {
  def control(msg: String): Future[String] = {
    actor.ask(msg)(Timeout(2 seconds)).mapTo[String]
  }
}

我的演员代码是:

class ActorA extends Actor {
  override def receive: Receive = {
    case msg: String => sender ! msg
    case msg: Int => sender ! msg.toString
    case _ => "Invalid command!"
}

现在我需要将ActorA的行为模拟为单元测试Controller.有没有办法通过Akka TestKit这样做?



1> Ramon J Rome..:

用一个TestProbe.从测试文档:

val probe = TestProbe()
val future = probe.ref ? "hello"
probe.expectMsg(0 millis, "hello") 
probe.reply("world")
assert(future.isCompleted && future.value == Some(Success("world")))


@himanshuIIITian欢迎你.是的,您可以按照指定的方式使用probe.ref,但在`val probe = TestProbe()`之后的单元测试代码中,您必须添加类似`probe.expectMsg(500 millis,"hello")`和`probe的内容.reply("hello")`以便探测器的行为与您期望Actor的行为方式相同.快乐的黑客!
推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有