[英]Mockito argument to a private method
這是我的示例服務類:
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方法的調用次數? 當我嘗試驗證時,我必須提供列表對象。 但是我沒有看到任何獲取該對象的方法。
有什么想法嗎?
如果您不關心調用方法的確切列表,則可以使用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:
verify(dao).save(Matchers.anyList());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.