我正在试图模仿一个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。没运气。
答案 0 :(得分:4)
format(Date)
方法为final
,因此Mockito无法侦察它。
答案 1 :(得分:2)
来自Mockito常见问题:
Mockito有哪些限制
无法模拟最终方法 - 它们的实际行为在没有任何异常的情况下执行。 Mockito不能警告你嘲笑最终方法,所以请保持警惕。