这是我的示例服务类:
class Service {
@Inject
private TestDao dao;
public void method() {
//Other logic
List<SomeClass> list = new ArrayList<SomeClass>();
privateMethod(list);
//Other logic
}
private void privateMethod(List<SomeClass> list) {
dao.save(list);
}
}
如果我使用Mockito模拟dao,那么如何测试dao.save方法的调用次数?当我尝试验证时,我必须给出列表对象。但我没有看到任何方法来获得该对象。
有什么想法吗?
答案 0 :(得分:2)
如果您不关心调用方法的列表,则可以使用anyList()
匹配器。例如,如果要验证save()
方法被称为完全三次:
verify(dao, times(3)).save(anyList())
如果您想进一步断言调用save()
列表,请使用ArgumentCaptor
ArgumentCaptor
的示例用法:
ArgumentCaptor<List> argument = ArgumentCaptor.forClass(List.class);
verify(dao, times(3)).save(argument.capture());
List secondValue = argument.getAllValues().get(1); // captured value when the method was called the second time
答案 1 :(得分:1)
使用Matchers.anyList()
调用验证:
verify(dao).save(Matchers.anyList());