2017-02-18 51 views
0

twitter-clone例如,下面的火力客戶端被定義:finatra /示例/ Twitter的克隆:測試火力客戶

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

// ... 

} 

我想編寫使用這個類的測試。我的問題是,我不能簡單地實例化在我的測試代碼這個類的一個變量:

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

因爲我不知道怎麼的HttpClientFinatraObjectMapper實例生產代碼實際上創建做。我可以嘗試手動創建這些對象,但是這增加了我想避免的樣板。

我怎樣才能得到FirebaseClient的實例的神奇的Finatra中使用的依賴注入機制?

回答

0

該問題的答案詳見finatra-users組。爲了完整起見,我在此總結。

基本上需要依賴注入的實例可以通過使用TestInjector類來獲得。對於手頭的問題,FirebaseClient實例可以按如下方式獲得:

class FirebaseClientTest extends SomeClassOfATestFramework { 

    val injector = TestInjector(FirebaseClientModule) 

    val firebaseClient: FirebaseClient = injector.instance[FirebaseClient] 
}