簡體   English   中英

Mockito私有方法的參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM