2017-01-12 4 views
3

Вот мой сценарийКак насмехаться с датой в mockito?

public int foo(int a) { 
    return new Bar().bar(a, new Date()); 
} 

My test: 
Bar barObj = mock(Bar.class) 
when(barObj.bar(10, ??)).thenReturn(10) 

Я попытался подключить в любой(), anyObject() и т.д. Любая идея подключить?

Однако я получаю исключение:

.mockito.exceptions.misusing.InvalidUseOfMatchersException: 
Invalid use of argument matchers! 
3 matchers expected, 1 recorded: 


This exception may occur if matchers are combined with raw values: 
    //incorrect: 
    someMethod(anyObject(), "raw String"); 
When using matchers, all arguments have to be provided by matchers. 
For example: 
    //correct: 
    someMethod(anyObject(), eq("String by matcher")); 

For more info see javadoc for Matchers class. 

Мы не используем powermocks.

ответ

4

Проходите необработанное значение есть (как ошибка уже упоминалось). Вместо этого используйте соответствующий помощник:

import static org.mockito.Mockito.*; 

... 
when(barObj.bar(eq(10), any(Date.class)) 
    .thenReturn(10) 
1

В сообщении об ошибке говорится:

При использовании matchers, все аргументы должны быть предоставлены matchers.

Bar bar = mock(Bar.class) 
when(bar.bar(eq(10), anyObject())).thenReturn(10) 
Смежные вопросы