#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)
...
}