私有方法的Mockito参数



这是我的示例服务类:

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());

相关内容

  • 没有找到相关文章

最新更新