【问题标题】:Write a mockito test for void method为 void 方法编写一个模拟测试
【发布时间】:2018-01-26 15:09:01
【问题描述】:

我正在尝试为一个写得很糟糕的方法编写一个测试用例,下面是该方法的实现:

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

我想测试过滤规则是否正常工作,我应该采取什么方法?

【问题讨论】:

  • mock / spy DB,捕获传递给insertProcessedData的参数,然后将记录的参数与您期望的进行比较。
  • 你可以用Mockito.verify来检查你是否通过了过滤方法以及你使用的次数

标签: java junit mockito void


【解决方案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 是否有您需要的任何内容(例如,预期大小,...)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-07
    相关资源
    最近更新 更多