2016-04-17 149 views
0

我使用的是Guice 4,我有一個類,我想在http會話級別作用域,所以我用@SessionScoped對它進行了裝飾。問題是,當我單元測試這個類時,我得到以下異常。我不知道我應該如何在我的測試中效仿。單元測試SessionScoped類

com.google.inject.CreationException: Unable to create injector, see the following errors: 

1) No scope is bound to com.google.inject.servlet.SessionScoped. 
    at org.abc.collab.repo.SessionedUOW.class(SessionedUOW.java:12) 
    at org.abc.business.BusinessModule.configure(BusinessModule.java:18) 
+0

發佈您的測試示例,必要的最低限度,包括您的guice測試模塊。 – sargue

回答

2

它看起來像你使用吉斯只是部分:你有你的類掛鉤,而不是範圍綁定(調用bindScope),它需要。

一般來說,你不應該在單元測試中使用真正的Guice噴射器;相反,使用其構造函數實例化您的類並自己提供它的依賴關係(根據需要使用假貨或嘲笑)。

如果確實需要使用吉斯,事先警告,這已經不再是一個單元測試,現在更像一個系統測試集成測試。此時,您需要診斷您需要的bindScope的哪個調用,並考慮將其解壓縮到測試助手中,以使測試的其餘部分更加容易。