2013-06-28 7 views
2

Я хочу издеваться над устаревшим объектом в своем модульном тесте. Вот конструктор:Mock Constructor with constructor-args Object ... object

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.