mockito 无法匹配重载方法

mockito can't match overloaded method

我正在尝试模拟一个 SimpleDateFormat 对象,但 Mockito 说我的参数数量错误。代码:

 SimpleDateFormat spyDateFormat = spy(new SimpleDateFormat(DateFormatManager.MAIN_ACTIVITY_TITLE_FORMAT));
 // exception points to below line
 when(spyDateFormat.format(any(Date.class))).thenReturn("foo format");

异常:

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

该方法存在于 DateFormat 中,其父级:

http://docs.oracle.com/javase/7/docs/api/java/text/DateFormat.html#format(java.util.Date)

使用 spy 尝试切换到 DateFormat。没有运气。

format(Date) 方法是 final,所以 Mockito 无法监视它。

From the Mockito FAQ:

Mockito 有什么限制

无法模拟 final 方法 - 它们的真实行为无一例外地执行。 Mockito 无法警告您模拟 final 方法,因此请保持警惕。