我正在使用Guice在演员中注入组件,如Play! Scala 2.5 documentation中所述。
在我的应用程序中,我在我的类中注入了unshortLinksFactory: UnshortLinks.Factory
,我创建了一个像这样的新演员:
val unshortLinksActor = actorSystem.actorOf(Props(unshortLinksFactory(ws)))
问题是我不能在我的测试类中注入组件(可以吗?)否则测试不会启动。 (请注意,我使用的是Scalatest。)
如何在测试中创建actor? (如果我可以像val unshortLinksActor = system.actorOf(Props(unshortLinksFactory(ws)))
那样创建它,那就没问题了,但最好能够使用TestActorRef
中的Akka.testKit
创建它,以便能够访问underlyingActor
{1}}。
答案 0 :(得分: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
访问我的演员内部的方法。