У меня есть веб-приложение, в котором используется пользовательский 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)
...
}