2012-03-15 69 views
0

我開始將Google Guice用於我的日常編程任務。我需要將一個現有的對象傳遞給Injector來初始化對象圖,所以我使用方法Injector#injectMembers(instance)來完成它。但我不確定它是否有效,所以我寫了一個單元測試,但沒有按照我的預期工作。我錯過了什麼?我使用Guice 3Google Guice的InjectMembers()方法實際上不起作用嗎?

public class Login_Should { 
    @Test 
    public void testName() throws Exception { 
     Login login = new Login(); 

     Injector injector = Guice.createInjector(new LoginModule()); 
     injector.injectMembers(login); 

     LoginWrapper caller = injector.getInstance(LoginWrapper.class); 
     assertEquals(login.getName(), caller.getName()); 
    } 
} 

public class Login { 

    private int random; 

    public Login() { 
     this.random = new Random().nextInt(); 
    } 

    public String getName() { 
     return "Mr. A" + random; 
    } 
} 

public class LoginWrapper { 
    private Login login; 

    @Inject 
    public LoginWrapper(Login login) { 
     this.login = login; 
    } 

    public String getName() { 
     return login.getName(); 
    } 
} 

public class LoginModule extends AbstractModule{ 

    @Override 
    protected void configure() { 
     bind(LoginWrapper.class); 
    } 

} 

回答

1

injectMembers注入一個無Guice創建的對象及其依賴關係。你想要做的事情我認爲是你的模塊中的bind(Login.class).toInstance(login);

+0

我很困惑這一點。謝謝你的回答。我也看到這個問題也可以通過使用@Provides註解來解決。 – 2012-03-15 12:53:06

相關問題