0

twitter-clone示例中,定义了以下 firebase 客户端:

@Singleton
class FirebaseClient @Inject()(
  httpClient: HttpClient,
  mapper: FinatraObjectMapper) {

// ...

}

我想写一个使用这个类的测试。我遇到的问题是我不能简单地在我的测试代码中实例化这个类的一个变量:

class FirebaseClientTest extends ??? {
    val firebaseClient: FirebaseClient = new FirebaseClient(???, ???)
}

因为我不知道如何在生产代码中实际创建HttpClientand的实例。FinatraObjectMapper我可以尝试手动创建这些对象,但这会增加我想避免的样板。

如何FirebaseClient通过 Finatra 中使用的依赖注入机制的魔力获得一个实例?

4

1 回答 1

0

这个问题的答案在finatra-users组中有详细说明。为了完整起见,我在这里总结一下。

基本上需要注入依赖的实例可以通过使用TestInjector类来获得。对于手头的问题,FirebaseClient可以得到一个实例如下:

class FirebaseClientTest extends SomeClassOfATestFramework {

    val injector = TestInjector(FirebaseClientModule)

    val firebaseClient: FirebaseClient = injector.instance[FirebaseClient]
}
于 2017-02-19T23:06:28.210 回答