Ami*_*ibi 5 java mockito java-8
List<Bucket> bucketList = new ArrayList<Bucket>(50);
// Populate bucketList and use it to run the test
verify(mockDao).createSomething(anyMapOf(Long.class, Long.class), eq(bucketList));
Run Code Online (Sandbox Code Playgroud)
ArrayList的equals继承自AbstractList,调用其成员的"equals"和"Bucket"实现"equals".但是,调试器永远不会停留在Bucket的equals方法中.我错过了什么吗?
顺便说一句,"eq"是org.mockito.Matchers.eq.
实际上org.mockito.Matchers.eq使用org.mockito.internal.matchers.Equality.areEqual(Object o1, Object o2)方法来检查给定匹配器的相等性与传递给方法的实际值.有趣的是,这个方法的实现是从hamcrest中窃取的,如评论中所述:
//stolen from hamcrest because I didn't want to have more dependency than Matcher class
//...
public static boolean areEqual(Object o1, Object o2) {
if (o1 == o2 ) {
return true;
} else if (o1 == null || o2 == null) {
return o1 == null && o2 == null;
} else if (isArray(o1)) {
return isArray(o2) && areArraysEqual(o1, o2);
} else {
return o1.equals(o2);
}
}
Run Code Online (Sandbox Code Playgroud)
在此方法的最开头放置一个断点,以查看您自己的代码中发生了什么.既然你传递ArrayList给你的论证,eq() 你可能需要深入研究areArraysEqual和areArrayLengthsEqual方法.
| 归档时间: |
|
| 查看次数: |
2853 次 |
| 最近记录: |