我正在尝试编写一个编写得非常糟糕的方法的测试用例,下面是该方法的实现:
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);
}
我想测试过滤规则是否正常工作,我应该采取什么方法?
答案 0 :(得分:1)
您应该模拟DB
并在getRawData()
上返回您想要处理的数据列表:
Mockito.when(DB.getRawData()).thenReturn(myList);
然后使用Mockito.verify
检查应该通过过滤器的所有rawData是否都在processedData
列表中,使用Captor
,它可以捕获传递的数据到insertProcessedData
:
@Captor
ArgumentCaptor<String> listCaptor;
Mockit.verify(DB).insertProcessedData(listCaptor.capture());
List<Object> processedData = listCaptor.getValue();
然后您可以检查processedData
是否需要(例如预期大小......)。