scala - 如何模拟 Akka Actor 来对类(class)进行单元测试?

标签 scala unit-testing dependency-injection akka akka-testkit

我有一个 Controller 类,它控制发送到注入(inject) Controller 的 Akka Actor 的请求。

Controller 代码:

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

我的 Actor 的代码是:
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 做到这一点?

最佳答案

使用 TestProbe .来自 testing documentation :

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

关于scala - 如何模拟 Akka Actor 来对类(class)进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34265013/

相关文章:

php - 排序和过滤依赖项

java - HK2 与 Jersey 2 和 Apache Shiro 的依赖注入(inject)

visual-studio-2008 - 有什么方法可以使普通项目表现得像 Microsoft 测试项目吗?

c# - 使用多个事实或单一理论

dependency-injection - 我应该在 Yii2 的哪里设置 DI 容器?

java - 将 "String*"(Scala) 转换为/自 "String..."(Java)

java - 如何检查哪个线程在握住监视器?

scala - 是否可以在 Scala 中表达以下内容 "type test = Either[List[test], T]"

scala - Spark Scala Dataframe将一列结构数组转换为一列映射

ios - bundleForClass 返回 nil 的解释是什么?如何更正?