2016-03-05 5 views
0

У меня есть фасоль:Как я могу издеваться над конструктором с varargs с помощью PowerMockito?

class Bean { 
    public Bean(String name, Integer number, Resource... resources) { 
     // ... 
    } 
} 

Я хочу издеваться конструктор компонента. Вот мой тест:

@Test 
public void shouldReturnMockedBean() throws Exception { 
     PowerMockito.whenNew(Bean.class) 
       .withArguments(
         Mockito.anyString(), 
         Mockito.anyInt(), 
         Mockito.<Resource>anyVararg() 
       ).thenReturn(beanMock); 

     Bean bean = new Bean("abc", 1); 

     Assert.assertNotNull(bean); 
} 

Я также использую PowerMockito аннотаций в моем тестовом классе:

@RunWith(PowerMockRunner.class) 
@PrepareForTest({Bean.class}) 

Но я получаю ошибку null вместо моего издеваться. Что я здесь делаю неправильно?

+0

http://stackoverflow.com/questions/2631596/how-to-properly-match-varargs-in-mockito –

+0

На ваш вопрос, можете ли вы прокомментировать строку кода с ошибкой? – 4castle

ответ

2

Параметр varargs получает значение null вместо создания varargs, где первый элемент равен null.

Чтобы это исправить, сделать Bean bean = new Bean("abc", 1, (Resource)null);

См this

Если вы имели в виду не предоставлять никаких ресурсов, однако, то просто опускаем 3-й параметр.

+0

Мне нужно проверить конструктор 'new Bean (« abc », 1)' где varargs в пустом. – AlexWei

+0

Вы все еще получаете сообщение об ошибке, когда выполняете конструктор таким образом? – 4castle

+0

Нет, если я оставлю это, тест пройдет. – AlexWei

Смежные вопросы