使用mockito验证参数时,集合的模糊等式

时间:2013-01-07 07:41:31

标签: java mocking mockito

mockito验证方法是否与集合的相同实例匹配,还是验证集合的元素? 如果我将一个断点放到Page#equals()方法中,它就不会被事件命中。只有Page#ha​​shCode()才有。知道为什么Mockito在具有相同元素的情况下不考虑Set的两个实现相等吗?

Set<Page> pagesToRemove = Sets.newHashSet();
// add a few pages
Set<Page> copy = ImmutableSet.copyOf(pagesToRemove)
pageManager.removePages(copy);
verify(pageManager, new Times(1)).removePages(pagesToRemove);

Page上的Equals和HashCodes方法具有从Object继承的默认实现。

  

争论是不同的!通缉:pageManager.removePages(       (HashSet)[{pageId:null; parentId:null; firstChild:null; nextSibling:null}等等...]);    - &GT;在com.fg.edee.integration.service.PageServiceTest.testRemove(PageServiceTest.java:60)   实际调用具有不同的参数:pageManager.removePages(       (RegularImmutableSet)[{pageId:null; parentId:null; firstChild:null; nextSibling:null}等等。]);

1 个答案:

答案 0 :(得分:0)

在使用引用类型对象作为参数验证方法调用时,可以使用ArgumentMatcher。请参阅here