在twitter-clone示例中,定义了以下firebase客户端:
@Singleton
class FirebaseClient @Inject()(
httpClient: HttpClient,
mapper: FinatraObjectMapper) {
// ...
}我想写一个使用这个类的测试。我的问题是,我不能在我的测试代码中简单地实例化这个类的变量:
class FirebaseClientTest extends ??? {
val firebaseClient: FirebaseClient = new FirebaseClient(???, ???)
}因为我不知道HttpClient和FinatraObjectMapper的实例是如何在生产代码中实际创建的。我可以尝试手动创建这些对象,但这会添加我想要避免的样板。
我如何通过Finatra中使用的依赖注入机制的魔力来获得FirebaseClient的实例?
发布于 2017-02-20 07:06:28
这个问题的答案在finatra-users组中有详细介绍。为了完整起见,我在这里总结一下。
基本上,需要注入依赖项的实例可以通过使用TestInjector类获得。对于手头的问题,可以通过如下方式获取FirebaseClient实例:
class FirebaseClientTest extends SomeClassOfATestFramework {
val injector = TestInjector(FirebaseClientModule)
val firebaseClient: FirebaseClient = injector.instance[FirebaseClient]
}https://stackoverflow.com/questions/42314554
复制相似问题