3

我正在使用 Guice 在演员内部注入组件,正如Play! Scala 2.5 文档
在我的应用程序中,我注入unshortLinksFactory: UnshortLinks.Factory了我的类并创建了一个像这样的新演员:

val unshortLinksActor = actorSystem.actorOf(Props(unshortLinksFactory(ws)))

问题是我不能在我的测试类中注入组件(我可以吗?)否则测试不会开始。(请注意,我使用 Scalatest。)

如何在我的测试中创建演员?如果我可以像这样创建它很好:

val unshortLinksActor = system.actorOf(Props(unshortLinksFactory(ws)))

但最好的办法是能够使用TestActorReffrom创建它Akka.testKit以便访问underlyingActor.

4

1 回答 1

0

我为了测试它所做的是:

我用TestKit(ActorSystem("testSystem")).

然后我创建Props这样的:

  lazy val unshortLinkFactoryProps = Props(unshortLinkFactory(
    dbConfigProvider = dbConfProvider)

这里dbConfProvider是这样创建的,但也可以模拟:

  lazy val appBuilder = new GuiceApplicationBuilder()
  lazy val injector = appBuilder.injector()
  lazy val dbConfProvider = injector.instanceOf[DatabaseConfigProvider]

最后我可以有一个这样的actorRef:

val actorRef = TestActorRef[UnshortLinksActor](unshortLinksFactoryProps)

我可以使用actorRef.underlyingActor.

于 2016-06-08T07:30:45.810 回答