将著名演员注入游戏中!测试

时间:2019-04-17 14:58:58

标签: scala playframework akka

我有一个使用自定义Akka Actor的网络应用。

我使用@Named注释注入演员,像这样:

@Singleton
class Thing @Inject()(@Named("scheduler-actor") schedulerActor: ActorRef) ...

我想将此演员注入到我的测试中,以便可以向其发送消息,但是我不确定该怎么做。

我正在使用Injecting特性,这使我可以使用inject函数,但是似乎没有任何替代的inject函数可以让我传递名称。

在互联网上是否有任何将演员注入Play的例子!测试?


更新1

经过一番研究后,我想出了这个解决方案,但是感觉有点棘手。

首先,我安装了Akka TestKit。

libraryDependencies += "com.typesafe.akka" %% "akka-testkit" % "2.5.22" % Test

然后我像这样使用TestActorRef

import actors.SchedulerActor.RefreshDevicesFromCCU
import akka.actor.{ActorRef, ActorSystem}
import akka.testkit.TestActorRef
import org.scalatest.BeforeAndAfterAll
import org.scalatestplus.play.PlaySpec
import utils.DatabaseSetupTearDown

class SchedulerActorSpec 
  extends PlaySpec
    with GuiceOneAppPerSuite
    with Injecting {

  implicit val system: ActorSystem = inject[ActorSystem]
  val schedulerActor: SchedulerActor = inject[SchedulerActor]
  val schedulerActorRef: ActorRef = TestActorRef(schedulerActor)

  ...
}

0 个答案:

没有答案