2013-06-28 218 views
2

我想在我的單元測試中模擬一個遺留對象。下面是構造函數:帶構造函數參數的模擬構造函數對象...對象

public Class LegacyClass{ 
    public LegacyClass(Object... obj) { 
     super(obj); 
    } 
} 

我嘗試使用powerMock這樣嘲笑它:

whenNew(LegacyClass.class).withParameterTypes(Object.class). 
withArguments(anyString(), anyString()).thenAnswer(new Answer<Object>(){ 
...//Answer impl code 
}); 

這裏涉及到的問題:

  1. 我應該把哪個類withParameterTypes()?
  2. 我可以把它放在@Before setup()中嗎?
+1

他最近拿起..... – BugsBunny

回答

3

使用Object[].class訪問可變參數參數的參數類型:

PowerMockito.whenNew(LegacyClass.class) 
      .withParameterTypes(Object[].class) 
      .withArguments(Mockito.anyString(), Mockito.anyString()) 
      .thenAnswer(new Answer<Object>() { 
       public Object answer(InvocationOnMock invocation) 
         throws Throwable { 
        // your code 
       } 
      }); 

我測試,這個工作也在@Before方法。