Внедрение именных актеров в игру!Тестовое задание - PullRequest
1 голос
/ 17 апреля 2019

У меня есть веб-приложение, в котором используется пользовательский Akka Actor.

Я внедряю актера, используя аннотацию @Named, что-то вроде этого:

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

Я хочу добавитьэтот актер в моих тестах, чтобы я мог отправлять ему сообщения, но я не уверен, как это сделать.

Я использую черту Injecting, которая дает мне доступ к функции inject, ноПохоже, что нет альтернативной функции inject, которая позволила бы мне передать имя.

Есть ли в интернете какие-либо примеры введения актера в игру!test?


Обновление 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)

  ...
}
...