这是我的示例服务类:
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的次数?保存方法?当我尝试使用verify时,我必须给出list对象。但是我不知道有什么方法可以得到这个对象。
任何想法吗?
如果你不关心你的方法被调用的列表,你可以使用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
调用验证Matchers.anyList()
:
verify(dao).save(Matchers.anyList());