我正在尝试为一个写得很差的方法编写一个测试用例,下面是该方法的实现:
public void processData(){
DB.connectToDB1();
List rawData = DB.getRawData();
List processedData = new List();
for (Object obj : rawData){
//pass through filter
if(obj.passesFilter){
processedData.add(obj);
}
}
DB.connectToDB2();
DB.insertProcessedData(processedData);
}
我想测试过滤器规则是否正常工作,应该采取哪种方法?
最佳答案
您应该模拟DB
并在getRawData()
上返回要处理的数据列表:
Mockito.when(DB.getRawData()).thenReturn(myList);
然后使用
Mockito.verify
通过使用processedData
来检查应该通过筛选器的所有rawData,方法是使用Captor
,它可以捕获传递到insertProcessedData
的数据:@Captor
ArgumentCaptor<String> listCaptor;
Mockit.verify(DB).insertProcessedData(listCaptor.capture());
List<Object> processedData = listCaptor.getValue();
然后,您可以检查
processedData
是否需要任何内容(例如,预期尺寸,...)。