Вводите в игру Именованных актеров! Тест

#scala #playframework #akka

#scala #игровая рамка #akka

Вопрос:

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

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

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

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

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

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


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

  ...
}