mockito无法匹配重载方法

时间:2015-10-08 16:47:03

标签: java mockito

我正在试图模仿一个SimpleDateFormat对象,但Mockito说我有错误的args数量。代码:

 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。没运气。

2 个答案:

答案 0 :(得分:4)

format(Date)方法为final,因此Mockito无法侦察它。

答案 1 :(得分:2)

  

来自Mockito常见问题:

Mockito有哪些限制

无法模拟最终方法 - 它们的实际行为在没有任何异常的情况下执行。 Mockito不能警告你嘲笑最终方法,所以请保持警惕。