2016-11-30 3 views
1

Я пытаюсь проверить этот метод, чтобы увидеть, если searchProfile вызывается без аргументов:Mockito Java - метод тестового вызова с различными аргументами

public void searchProfile(Long searchTerm) { 
    this.searchTerm = searchTerm; 
    searchProfile(); 
} 

public void searchProfile() { 
    //... 
} 

Это мой тест, я вызываю метод с одним аргументом и ожидаем, что один без аргумента, который будет называться

@Test 
public void testSearchProfile() throws Exception { 
    CustomerProfileController sutStub = Mockito.mock(CustomerProfileController.class); 

    doNothing().when(sutStub).searchProfile(); 

    sutStub.searchProfile(0L); 

    verify(sutStub, times(1)).searchProfile(); 
} 

Как я могу это сделать? Сейчас это просто дает мне ошибку:

Comparison Failure:

Expected: customerProfileController.searchProfile();

Actual: customerProfileController.searchProfile(0);

+0

Я предполагаю, что принятый ответ верен в том смысле, что он исправляет вашу проблему. Но почему вы хотите проверить макет? Разве не было бы лучше проверить конкретный экземпляр «CustomerProfileController» и высмеять его зависимости, как обычно делается обычное тестирование? – Magnilex

+0

@Magnilex, вы правы в этом, я хотел бы шпионить за методами. После некоторых исследований я изменил тестовую реализацию. Благодаря! – Randy

+0

Да, я собирался добавить ответ, говоря, что шпионаж, вероятно, лучший выбор, но у меня не было достаточного контекста для этого. – Magnilex

ответ

3

Вы должны использовать

Mockito.when(sutStub.searchProfile(Mockito.anyLong())).thenCallRealMethod(); 

При подготовке издеваться.

+0

Отлично! Это дало мне голову, чтобы построить мое решение. Это должно быть 'doCallRealMethod(). Когда (sutStub) .searchProfile (Mockito.anyLong()); вместо этого из-за метода' void'. Спасибо :) – Randy

+0

Правильно, не заметите, что это пусто. –

+0

Возможно, использование шпиона также является для вас вариантом –

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